Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang
2019-12-17 15:07:00 +08:00
9 changed files with 787 additions and 131 deletions

View File

@@ -1,28 +1,28 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11684-1.html)
[#]: subject: (Awk one-liners and scripts to help you sort text files)
[#]: via: (https://opensource.com/article/19/11/how-sort-awk)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
单行 Awk 或脚本帮助你排序文本文件
帮助你排序文本文件的 Awk 命令行或脚本
======
> Awk 是一个强大的工具,可以执行某些可能由其它常见实用程序(包括 `sort`)来完成的任务。
![Green graph of measurements][1]
![](https://img.linux.net.cn/data/attachment/album/201912/17/095222q7m5da4h8facvmtv.jpg)
Awk 是个普遍存在的 Unix 命令,用于扫描和处理包含可预测模式的文本。但是,由于它具有函数功能,因此也可以合理地称为编程语言。
Awk 是个普遍存在的 Unix 命令,用于扫描和处理包含可预测模式的文本。但是,由于它具有函数功能,因此也可以合理地称为编程语言。
令人困惑的是,有不止一个 awk。或者如果你认为只有一个那么其它几个就是克隆。`awk`由Aho、Weinberger 和 Kernighan 编写的原始程序),然后有 `nawk``mawk` 和 GNU 版本 `gawk`。GNU 版本的 awk 是该实用程序的一个高度可移植的自由软件版本,具有几个独特的功能,因此本文是关于 GNU awk 的。
令人困惑的是,有不止一个 awk。或者如果你认为只有一个那么其它几个就是克隆。`awk`由Aho、Weinberger 和 Kernighan 编写的原始程序),然后有 `nawk``mawk` 和 GNU 版本 `gawk`。GNU 版本的 awk 是该实用程序的一个高度可移植的自由软件版本,具有几个独特的功能,因此本文是关于 GNU awk 的。
虽然它的正式名称是 `gawk`,但在 GNU+Linux 系统上,它的别名是 `awk`,并用作该命令的默认版本。 在其他没有带有 GNU awk 的系统上,你必须安装它并将其称为 `gawk`,而不是 `awk`。本文互换使用术语 `awk``gawk`
虽然它的正式名称是 `gawk`,但在 GNU+Linux 系统上,它的别名是 `awk`,并用作该命令的默认版本。 在其他没有带有 GNU awk 的系统上,你必须安装它并将其称为 `gawk`,而不是 `awk`。本文互换使用术语 `awk``gawk`
`awk` 既是命令语言又是编程语言,使其成为一个强大的工具,可以处理原本留给 `sort``cut``uniq` 和其他常见实用程序的任务。幸运的是,开放源代码中有很多冗余空间,因此,如果你面临是否使用`awk` 的问题,答案可能是肯定的“也许”。
`awk` 既是命令语言又是编程语言,使其成为一个强大的工具,可以处理原本留给 `sort``cut``uniq` 和其他常见实用程序的任务。幸运的是,开中有很多冗余空间,因此,如果你面临是否使用 `awk` 的问题,答案可能是肯定的“随便”。
`awk` 的灵活之美在于,如果你已经承诺使用 `awk` 来完成一项任务,那么无论接下来发生什么,你都可以继续使用 `awk`。这包括对数据排序而不是按交付给你的顺序的永恒需求。
`awk` 的灵活之美在于,如果你已经确定使用 `awk` 来完成一项任务,那么无论接下来发生什么,你都可以继续使用 `awk`。这包括对数据排序而不是按交付给你的顺序的永恒需求。
### 样本数据集
@@ -41,12 +41,12 @@ Torvaldis;linux;Ewing,L;1996;Tux
这是一个很小的数据集,但它提供了多种数据类型:
* 属名和种名,彼此相关但又是分开的
* 姓,有时以逗号开头的首字母缩写
* 姓,有时以逗号开头的首字母缩写
* 代表日期的整数
* 任意术语
* 所有字段均以分号分隔
根据你的教育背景,你可能会认为这是二维数组或表格,或者只是行分隔的数据集合。你如何看待它取决于你,因为 `awk` 只认识文本。由你决定告诉 `awk` 你想如何解析它。
根据你的教育背景,你可能会认为这是二维数组或表格,或者只是行分隔的数据集合。你如何看待它只是你的问题,而 `awk` 只认识文本。由你决定告诉 `awk` 你想如何解析它。
### 只想排序
@@ -54,15 +54,13 @@ Torvaldis;linux;Ewing,L;1996;Tux
### 字段和记录
字段和记录
无论输入的格式如何,都必须在其中找到模式才可以专注于对你重要的数据部分。在此示例中,数据由两个因素定界:行和字段。每行都代表一个新的*记录*,就如你在电子表格或数据库转储中看到的一样。在每一行中,都有用分号(`;`)分隔的不同的*字段*(将其视为电子表格中的单元格)。
`awk` 一次只处理一条记录,因此,当你在组织发给 `awk` 的这指令时,你可以只关注一行记录。写下你想对一行数据执行的操作,然后在下一行进行测试(无论是心理上还是用 `awk` 进行测试),然后再进行其一些测试。最后,你要对你的 `awk` 脚本要处理的数据做好假设,以便可以按你要的数据结构提供给你数据。
`awk` 一次只处理一条记录,因此,当你在构造发给 `awk` 的这指令时,你可以只关注一行记录。写下你想对一行数据执行的操作,然后在下一行进行测试(无论是心理上还是用 `awk` 进行测试),然后再进行其它的一些测试。最后,你要对你的 `awk` 脚本要处理的数据做好假设,以便可以按你要的数据结构提供给你数据。
在这个例子中,很容易看到每个字段都用分号隔开。为简单起见,假设你要按每行的第一字段对列表进行排序。
在进行排序之前,你必须能够让 `awk` 只关注在每行的第一个字段上,因此这是第一步。终端中 awk 命令的语法为 `awk',后跟相关选项,后跟你的 `awk` 命令,最后是要处理的数据文件。
在进行排序之前,你必须能够让 `awk` 只关注在每行的第一个字段上,因此这是第一步。终端中 awk 命令的语法为 `awk`,后跟相关选项,最后是要处理的数据文件。
```
$ awk --field-separator=";" '{print $1;}' penguins.list
@@ -94,7 +92,6 @@ Ewing,L
`awk` 不仅仅是命令,它是一种具有索引、数组和函数的编程语言。这很重要,因为这意味着你可以获取要排序的字段列表,将列表存储在内存中,进行处理,然后打印结果数据。对于诸如此类的一系列复杂操作,在文本文件中进行操作会更容易,因此请创建一个名为 `sort.awk` 的新文件并输入以下文本:
```
#!/bin/gawk -f
@@ -103,7 +100,7 @@ BEGIN {
}
```
这会将文件建立为 `awk` 脚本,该脚本中包含执行的行。
这会将文件建立为 `awk` 脚本,该脚本中包含执行的行。
`BEGIN` 语句是 `awk` 提供的特殊设置功能,用于只需要执行一次的任务。定义内置变量 `FS`,它代表<ruby>字段分隔符<rt>field separator</rt></ruby>,并且与你在 `awk` 命令中使用 `--field-separator` 设置的值相同,它只需执行一次,因此它包含在 `BEGIN` 语句中。
@@ -113,9 +110,9 @@ BEGIN {
在排序的上下文中这样做的好处是,你可以将任何字段分配为键,将任何记录分配为值,然后使用内置的 `awk` 函数 `asorti()`(按索引排序)按键进行排序。现在,随便假设你*只*想按第二个字段排序。
*没有*被特殊关键字 `BEGIN``END` 引起来的 `awk` 语句是在每个记录都执行的循环。这是脚本的一部分,该脚本扫描数据中的模式并进行相应的处理。每次 `awk` 将注意力转移到一条记录上时,都会执行 `{}` 中的语句(除非以 `BEGIN``END` 开头)。
*没有*被特殊关键字 `BEGIN``END` 引起来的 `awk` 语句是在每个记录都执行的循环。这是脚本的一部分,该脚本扫描数据中的模式并进行相应的处理。每次 `awk` 将注意力转移到一条记录上时,都会执行 `{}` 中的语句(除非以 `BEGIN``END` 开头)。
要将键和值添加到数组,请创建一个包含数组的变量(在本示例脚本中,我将其称为 `ARRAY `,虽然不是很原汁原味,但很清楚),然后在方括号中分配给它键用等号(`=`)连接值。
要将键和值添加到数组,请创建一个包含数组的变量(在本示例脚本中,我将其称为 `ARRAY`,虽然不是很原汁原味,但很清楚),然后在方括号中分配给它键用等号(`=`)连接值。
```
{   # dump each field into an array
@@ -125,7 +122,6 @@ BEGIN {
在此语句中,第二个字段的内容(`$2`)用作关键字,而当前记录(`$R`)用作值。
### asorti() 函数
除了数组之外,`awk` 还具有一些基本函数你可以将它们用作常见任务的快速简便的解决方案。GNU awk中引入的函数之一 `asorti()` 提供了按键(*索引*)或值对数组进行排序的功能。
@@ -175,11 +171,11 @@ papua Pygoscelis;papua;Wagler;1832;Gentoo
如你所见,数据按第二个字段排序。
这有点限制。最好可以在运行时灵活选择要用作排序键的字段,以便可以在任何数据集上使用此脚本并获得有意义的结果。
这有点限制。最好可以在运行时灵活选择要用作排序键的字段,以便可以在任何数据集上使用此脚本并获得有意义的结果。
### 添加命令选项
你可以通过在脚本中使用字值 `var` 将命令变量添加到 `awk` 脚本中。更改脚本,以使迭代子句在创建数组时使用 `var`
你可以通过在脚本中使用字`var` 将命令变量添加到 `awk` 脚本中。更改脚本,以使迭代子句在创建数组时使用 `var`
```
{ # dump each field into an array
@@ -187,7 +183,7 @@ papua Pygoscelis;papua;Wagler;1832;Gentoo
}
```
尝试运行脚本,以便在执行脚本时使用 `-v var` 选项将其按第三字段排序:
尝试运行脚本,以便在执行脚本时使用 `-v var` 选项将其按第三字段排序:
```
$ ./sorter.awk -v var=3 penguins.list
@@ -235,7 +231,7 @@ via: https://opensource.com/article/19/11/how-sort-awk
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,192 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (10 tips for onboarding open source contributors)
[#]: via: (https://opensource.com/article/19/12/open-source-contributors)
[#]: author: (rowasc https://opensource.com/users/rowasc)
10 tips for onboarding open source contributors
======
Making new contributors feel welcome in your community is essential to
your project's future, so it's important to put time and attention into
onboarding them.
![Women programming][1]
Contributors are the lifeblood of many open source projects because they enable smaller projects to grow and improve without a lot of financial support and they bring fresh perspectives to the project. That is the case at [Ushahidi][2], a non-profit organization that is building and using software to help raise the voices of underserved, marginalized communities. Our products enable local observers to submit reports about local humanitarian crises (such as political unrest and natural disasters) using their mobile phones or the internet, while simultaneously creating a temporal and geospatial archive of events.
Ushahidi always strives for openness, but **it's very hard to evaluate how open your organization works from the inside**. Staff and longtime contributors know too much: they are cursed by knowledge and access to the people who know how things work. While a crisis brings out the good in people who want to help, getting involved with an open source project during a crisis is complex. The maintainers are usually going through a stressful time. New requests for features are coming every day. New bugs are being reported all the time.
There are never enough people to fix everything, which is why it's so important for projects to have a good process for onboarding new contributors.
### Why Ushahidi needed to re-engage with its community
In the beginning, Ushahidi had a really big community and did a lot of community engagement. We had community dev calls, where core developers and community developers talked about what they were working on. We had t-shirts and swag; we had community badges and blog posts celebrating the top contributor of the month. We sponsored tech events and made sure to have a booth or a presentation showcasing the platform.
Our documentation was good and extensive with toolkits and examples for different use cases, our forum was active, we were active!
But then a few things happened. The software got outdated, and the core team started working on a new version. At the same time, we adopted a new strategy around sustainability and started a Software-as-a-Service model, spanning from free grassroots deployments to more complex enterprise plans, to try to bring much-needed financial stability and sustainability and serve new use cases and needs.
All of this took longer than expected, and we did not want to bring in new contributors "just yet." Not getting our contributors engaged from the beginning resulted in our docs being unclear, unfinished, and unstructured. We did not adjust the software to be easy for our open source users to install or use. **Nothing was intentional, but we were not serving our open source community as well as we would like.** Now, our main focus is to re-engage with our community.
The following are 10 things we've learned and done that may help you improve your contributor onboarding processes if you're in a similar situation.
### 1\. Evaluate your processes
To evaluate how open your organization's processes are and how they are working for new contributors, source new folks who can try to answer questions like: "How do you get new code into production?" and "Who can trigger a production release?" or "How does testing happen?"
Some things to look for:
* Is it clear to new contributors about how to get started? Are getting-started guides hard to find, too complex, or disorganized?
* Are communication and coordination happening in the open? Or are they hidden in Slack rooms, making it hard to know what is going on?
* Is the process for code reviews and merges clear? What about the safety nets for code contributions and the QA process?
When you're deep into a project with your community, it's difficult to know how it looks to new contributors. We learned that **what feels like an open process from the inside can feel very closed from the perspective of a new contributor**.
### 2\. Set the foundation
Diversity and inclusion are core to Ushahidi; about 80% of people working on the project are women and non-binary genders, a majority of our team are people of color, and we live on four continents. This reflects the reality that many of our users live in. They are not all in the United States, they are from diverse backgrounds, and they have different goals. What unites them is that they are all working to improve their communities in their own way.
For us, **having a good foundation starts with having a diverse team that represents our users and stakeholders**. But that's not all; we have also improved our contributor resources with:
* A new developers hub
* New and updated documentation
* New pathways to contributing
* Videos
* FAQs
We're also restarting our community engagement by:
* Doing webinars
* Hosting hackathons
* Proactively organizing and triaging issues
* Announcing releases and contributors to each release
### 3\. Make "getting started" clear
When someone wants to start contributing, there needs to be clarity on how to start. We label good starter contributions as first-timer issues; these describe in detail what needs to be done, how to find the code, and what you need to do. It takes us longer to write these issues than it would to fix the actual thing ourselves, but that is not the goal. The goal is to **give people who may be new to open source a chance to contribute and learn about the work we do**.
#### Find the blockers
It is also important to understand where the blockers for getting started are. One of Ushahidi's biggest blockers was installing the software in development environments. We assumed that because our engineers could get things set up, others would be able to do so. But other people may not have the same environment, and they absolutely did not have the amount of support that our core engineering team gets.
To resolve this, we created videos on installation procedures, and we also created an **installation-helper** feature that checks common things that people forget during configuration and installation and also gives hints on how to solve problems.
![Ushahidi's installation-helper][3]
### 4\. Learn from diverse perspectives
It's important to ask others to evaluate and double-check the documentation we provide to our contributors. We are really lucky that our team has people in programs, community, and design roles that really care about open source, and their input often helps us figure out how to **reach people who are less experienced with coding or who may want to contribute in different ways than writing code or doing QA**.
When we were creating videos for our new developers hub, our community engagement officer was a big help. She is not a developer, and she is an excellent writer, so she helped by watching us go through the documentation, taking notes, then writing the initial scripts for our videos. She ensured that the things that we encounter daily—and know how to deal with by heart—are addressed in the documentation.
Input like this is very valuable, since it reminds us what we know and take for granted that could confuse and turn away new contributors.
### 5\. When possible, make short calls
Try to invest in calls when needed and when your schedule allows. **Sometimes a five-minute call with a new contributor will give a better return than a 30-minute text chat.** If you reach a point in a chat that it's clear your instructions aren't working for the person, ask them to jump on a call to show you what they are doing. It's important to set a time limit (e.g., "I have 10 minutes now, so let's see if we can solve it right away"); otherwise, you may end up spending the whole day fixing unrelated things, which is not a great way to scale yourself.
Make sure to use what you learn from these interactions to improve your documentation. Otherwise, you will find yourself doing so many 10-minute calls that you will never get anything done.
### 6\. Always say thank you
**Thank people even when it feels all you are getting are requests to do more work.** We say thank you for everything. We say thank you for bug reports, feature requests, for code contributions. We say thank you for reaching out and asking for help.
It is hard for some people to reach out, and thanking them validates that it was OK to do so. This validation may also help people not only for the current situation but also for other projects and situations in the future.
### 7\. Be kind in code reviews
Someone has found you, gotten set up, fixed a bug, and finally sent a pull request. It's time to review the code. Step away from your personal opinions on how things should be. It's not time to be nit-picky and rude.
When performing code reviews, **ensure you are helping the person make the code better** and not just following your personal preferences. Find at least one good thing to say about the pull request, and _always thank the contributor_.
If you get a pull request that you don't plan to merge, maybe because it's the wrong scope or direction or simply something you don't want to add, it is important to deal with it straightaway instead of ignoring it. It does not help anyone to ignore pull requests, and it only serves to clutter your repository. Thank the contributor, explain why you don't plan to merge the changes, and close the pull request.
If you merge the changes, make sure to tag the contributor when it goes out so that they know it had an impact.
### 8\. Be responsive
Throughout this process, **it is important to be responsive and not let people wait**. Giving someone some kind of response—even if you can't help them right now—and setting the expectation for when you'll be able to follow up is super-important.
Sometimes a comment goes undiscovered—you miss a notification and find it three months later. It's tricky to respond in those situations, but it's still better to acknowledge the message, apologize for the delay, and ask if they still want help (with this or something else) rather than just ignoring them forever. It sets the tone that you care about your work and community, even when you make mistakes.
### 9\. Help contributors thrive
Sometimes a contributor comes in, sends their contributions, and leaves without much interaction. But, on some occasions, you get the opportunity to work with people over a longer time. Working with new contributors over a period of weeks or months is extremely valuable because you will gain insights into how people—especially those new to your project or tech—see your work and what challenges they face. It's also a chance to help people grow and learn. It's a win-win for everyone.
In 2019, we participated in the [Google Summer of Code][4] and [Outreachy][5], and these experiences helped both the interns and our team learn new things. By working with interns, we get to understand what it's like to join our project, what onboarding looks like for a very junior engineer, and what blockers there might be to them contributing to our project.
#### Prevent imposter syndrome
On a related note, it's important to help prevent [impostor syndrome][6]. The feeling of not belonging or of "how did I even get here" is so common, especially among underrepresented groups in tech. It is written and talked about a lot, especially in the past tense, but rarely by people who are actively going through it.
How do you spot it? How do you know someone is feeling like they aren't accomplishing enough or are feeling like a fraud?
**Showing senior folks failing and learning from their mistakes helps to create an inclusive environment.** Things like pair programming, sharing your past experiences, discussing your career path, and telling people about when you made mistakes are ways to help to bridge gaps between senior engineers and new people. It helps new folks feel like they belong in tech because the smart, senior people in front of them also had concerns and made mistakes, but they picked themselves up and kept going.
### 10\. Avoid communication barriers
This may be obvious, but not all your contributors speak English as their first language. For many, it'll be their second, or maybe even third or fourth, language. A lot of your contributors may not speak English at a level that allows them to collaborate seamlessly, and it's important to remember that broken English is fine, even expected, in a global project. Be empathetic, be nice, and support these folks. Don't assume that someone is "dumb" just because they have bad grammar in English. Just because someone does not speak perfect English, it does not mean they aren't talented. It literally only means they don't speak perfect English.
Another potential communication barrier is using mannerisms that others may perceive in different ways than we intended. For example, signing an email "Thanks, Romina" or saying "OK, bye!" sound perfectly appropriate to me, but they could signal to someone else that you don't respect them. To assign the label "rude" to someone because of this would be… quite rude?
**When you are dealing with a multicultural, global network of contributors, try not to worry about language barriers or mannerisms that aren't meant to be offensive.**
This doesn't mean that you should excuse bad behavior. There are no excuses for calling another person names, putting someone down, or misgendering someone on purpose, and maintainers are obligated to act on the code of conduct and resolve the situation.
### In summary
Making new contributors feel welcome in your community is essential to your project's future, so it's important to put time and attention into onboarding them.
* Make sure to see your community from the contributors' side.
* Enabling underrepresented minorities to thrive creates a more welcoming community for everyone.
* Be aware of the community you are serving and ask yourself what their specific needs are.
* Allow questions both in private and public.
* Be nice, set the tone.
* Say thank you.
* Be responsive.
* Be consistent.
### Other resources
* [Ushahidi's documentation][7]
* [First Timers Only][8] offers good tips for first-time contributors
* [GitHub's all-contributors repository][9] provides specs for recognizing all types of open source contributors
* [Up For Grabs][10] to find open issues for OSS and how to label issues
The four-day-long siege of a Nairobi mall ended Tuesday with a death toll of more than 60 people ...
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/open-source-contributors
作者:[rowasc][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/rowasc
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/collab-team-pair-programming-code-keyboard2.png?itok=WnKfsl-G (Women programming)
[2]: https://www.ushahidi.com/
[3]: https://opensource.com/sites/default/files/uploads/ushahidi_installation-helper.png (Ushahidi's installation-helper)
[4]: https://summerofcode.withgoogle.com/archive/
[5]: https://www.outreachy.org/
[6]: https://opensource.com/open-organization/17/5/team-impostor-syndrome
[7]: https://docs.ushahidi.com/index/
[8]: https://www.firsttimersonly.com/
[9]: https://github.com/all-contributors/all-contributors
[10]: https://up-for-grabs.net/

View File

@@ -0,0 +1,93 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (7 considerations when buying network-automation tools)
[#]: via: (https://www.networkworld.com/article/3490459/7-considerations-when-buying-network-automation-tools.html)
[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/)
7 considerations when buying network-automation tools
======
Heres the factors you need to weigh so you can make a smart decision about the network automation tool thats best for your organization.
bananajazz / Getty Images
The concept of network automation has been around for as long as there have been networks, and until now the uptake has been slow for a number of reasons including resistance from network engineers.  But now forces are coming together to create a perfect storm of sorts, driving a need for network automation tools.
One factor is that more and more network teams are starting to feel the pain of working in the fast-paced digital world where doing things the old way simply does not work.  The manual, box-by-box, method of configuring and updating routers and switches through a command-line interface (CLI) is too slow and error prone. 
[[Get regularly scheduled insights by signing up for Network World newsletters.]][1]
Also, the rise of software-defined networks ([SDN][2]), including software-defined WANs ([SD-WAN][3]), has enabled network-automation tools to evolve from operationally focused point products that address things like change management and configuration into policy and orchestration tools.
[][4]
BrandPost Sponsored by HPE
[Take the Intelligent Route with Consumption-Based Storage][4]
Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency.
Today, network-automation tools are strategic, enable business alignment, and provide a roadmap to the utopian state of a fully intent-based system where the network runs and secures itself. Their time is now, but there is a wide range of them. Below are seven key criteria that enterprises should consider when deciding which is best for them.
### Single vendor or multi-vendor?
There are several third-party and vendor-specific network automation tools.  Red Hat, NetBrain and Forward Networks are three of the leading multi-vendor tools.  All of the major network vendors including Cisco, Juniper, Arista and Extreme have their own automation platforms.
Customers need to determine if they want to go all in with a single vendor or strive for multiple vendors. Neither is better per se; its a choice the enterprise needs to make. If a single vendor platform is chosen, ensure it works with the vendor's entire product line and not just a subset. If a third-party tool is chosen, seek out one that that supports the current and likely future vendors whose gear will be in the organizations network.
### Breadth of APIs
Its important that network-automation tools interface with other tools such as ServiceNow and Splunk. This means every feature should be available as an API, which isnt always the case. Even if a tool is being used standalone today, it will likely need to interface with another application in the near future for broader automation capabilities, so this should not be overlooked.
### Orchestration
When network devices change, its often the case that another element of the infrastructure must also change. For example, when a network device is added, it may require changing a [firewall][5] setting or connecting to a load balancer. This drives up the need for orchestration capabilities so the network-automation tool can trigger other automation frameworks to change devices that are upstream or downstream from it.
### AI/intent-based networking capabilities
The concept of an [intent-based network][6] is that it runs, heals and secures itself. This cant be done with a bevy of rules because the environment changes too fast. Instead, AI capabilities should be included in the system to fully automate all operations so the network itself can adapt to changes.
ZK Research recommends that the system have two modes of operation one that recommends changes for the engineer to execute on and then one that fully executes changes without requiring human intervention.  This will let the customer get comfortable with AI first. (One question ZK Research gets a lot is how one knows its really AI based. The answer is that the tool gets smarter over time.  All changes should feed back into the system as part of the learning data set and make the system smarter.  Rules-based systems will not.)
### SaaS or on-prem?
Traditional network-automation tools have been offered only as on-premises software or appliances. There is a growing number of companies that prefer to buy the tools in a software as a service (SaaS) model to ensure rapid deployment and continuous updates.
Again, theres no wrong choice.  The company needs to determine which option best fits its operating model and compliance requirements.
One important note: Its the belief of ZK Research that all solutions will eventually be hybrid where customers may keep the data on the local premises, but advanced, artificial intelligence capabilities and cross-company comparisons will be done in the cloud.  On-prem solutions do not have the necessary horsepower to deliver real-time AI capabilities
### Compliance and security reporting
Theres a growing push from leading organizations to bring IT and security operations together.  This means network-automation tools need to provide information that shows security policies are continually being adhered to and compliance mandates are being met. The reporting capabilities need to provide visibility into every phase of the network lifecycle including planning, deploying and optimization.
### Ease of use
This is an often-overlooked component of management platforms. Feature-rich tools with long learning curves can require years before IT teams realize their full value.  Also, when a product is too technical, the company is put at risk if people with the best knowledge of it exit the organization.
Network automation tools should be fully GUI based, which means every feature available via the CLI should also be accessible through the graphical interface.  The tools should be easy to use as well so lower level engineers can work with it. This will obviate the need to always include a senior, more expensive engineer.
Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3490459/7-considerations-when-buying-network-automation-tools.html
作者:[Zeus Kerravala][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.networkworld.com/author/Zeus-Kerravala/
[b]: https://github.com/lujun9972
[1]: https://www.networkworld.com/newsletters/signup.html
[2]: https://www.networkworld.com/article/3209131/what-sdn-is-and-where-its-going.html
[3]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html
[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE20773&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage)
[5]: https://www.networkworld.com/article/3230457/what-is-a-firewall-perimeter-stateful-inspection-next-generation.html
[6]: https://www.networkworld.com/article/3202699/what-is-intent-based-networking.html
[7]: https://www.facebook.com/NetworkWorld/
[8]: https://www.linkedin.com/company/network-world

View File

@@ -1,105 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Annotate screenshots on Linux with Ksnip)
[#]: via: (https://opensource.com/article/19/12/annotate-screenshots-linux-ksnip)
[#]: author: (Clayton Dewey https://opensource.com/users/cedewey)
Annotate screenshots on Linux with Ksnip
======
Ksnip allows you to create and mark up screenshots in Linux with ease.
![a checklist for a team][1]
I recently switched from MacOS to [Elementary OS][2], a Linux distribution focused on ease of use and privacy. As a user-experience designer and a free software supporter, I take screenshots and annotate them all the time. After trying out several different tools, the one I enjoy the most by far is [Ksnip][3], an open source tool licensed under GPLv2.
![Ksnip screenshot][4]
### Installation
Install Ksnip with your preferred package manager. I installed it via Apt:
```
`sudo apt-get install ksnip`
```
### Configuration
Ksnip comes with quite a few configuration options, including:
* Location to save screenshots
* Default screenshot filename
* Image grabber behavior
* Cursor color and thickness
* Text font
You can also integrate it with your Imgur account.
![Ksnip configuration options][5]
### Usage
Ksnip offers a wide range of [features][6]. My favorite part of Ksnip is that it has all the annotation tools I need (plus one I hadn't thought of!).
You can annotate with:
* Pen
* Marker
* Rectangles
* Ellipses
* Text
You can also blur areas to remove sensitive information. And use my new favorite tool: numbered dots for steps on an interface.
### About the creator
I'm enjoying Ksnip so much that I reached out to the creator, [Damir Porobic][7], to learn more about the project.
When I asked what inspired him to create Ksnip, he said:
> "I switched from Windows to Linux a few years ago and missed the Windows Snipping Tool that I was used to on Windows. All other screenshot tools at that time were either huge (a lot of buttons and complex features) or lacked key features like annotations, so I decided to build a simple Snipping Tool clone, but with time it got more and more features. So here we are."
This is exactly what I found as I was evaluating screenshot tools. It's great that he took the time to build a solution and freely share it for others to benefit.
As for the future of Ksnip, Damir would like to add global shortcuts (at least for Windows) and tabs for new screenshots and allow the application to run in the background. There is also a growing list of feature requests on GitHub.
### Ways to help
Damir's biggest need for Ksnip help is with development. He and his wife are expecting a baby soon, so he won't have as much time to devote to the project. He is available to review and accept pull requests, though.
Also, the project could benefit from additional installation options via Snap and Flatpak and installers for MacOS and a setup for Windows. If you would like to help, check out the [Contribution][8] section of Ksnip's README.
* * *
_This article originally appeared on [Agaric Tech Cooperative's blog][9] and is republished with permission._
How do you know when your documentation needs screenshots? Ben Cotton shares some helpful tips.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/annotate-screenshots-linux-ksnip
作者:[Clayton Dewey][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/cedewey
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk (a checklist for a team)
[2]: https://elementary.io/
[3]: https://github.com/damirporobic/ksnip
[4]: https://opensource.com/sites/default/files/uploads/ksnip.png (Ksnip screenshot)
[5]: https://opensource.com/sites/default/files/uploads/ksnip-configuration.png (Ksnip configuration options)
[6]: https://github.com/DamirPorobic/ksnip#features
[7]: https://github.com/damirporobic/
[8]: https://github.com/DamirPorobic/ksnip/blob/master/README.md#contribution
[9]: https://agaric.coop/blog/annotate-screenshots-linux-ksnip

View File

@@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@@ -0,0 +1,104 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Relive Linux history with the ROX desktop)
[#]: via: (https://opensource.com/article/19/12/linux-rox-desktop)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
Relive Linux history with the ROX desktop
======
This article is part of a special series of 24 days of Linux desktops.
If you're looking for a fun trip back in time, the ROX desktop is well
worth a go.
![Person typing on a 1980's computer][1]
The [ROX][2] desktop is no longer being actively developed, but its legacy resounds today, and even when it was active, it was a unique take on what a Linux desktop could be. While other desktops felt roughly similar to old Unix or Windows interfaces, ROX belongs solidly in the BeOS, AmigaOS, and [RISC OS][3] desktop camps.
It focuses on drag-and-drop actions (which makes its accessibility non-optimal for some users), point-and-click actions, pop-up contextual menus, and a unique system of app directories for running local applications with no installation required.
### Installing ROX
Today, ROX is mostly abandoned and left in fragments that the user is left to sort out. Luckily, the puzzle is relatively easy to solve, but don't get confused when you find bits and pieces of the ROX desktop in your distribution's repository—but not _every_ bit of the ROX desktop. The popular parts of ROX—the file manager ([ROX-Filer][4]) and the terminal ([ROXTerm][5])—seem to have endured in most of the popular distribution repositories, and you can install (and use) them as standalone applications. However, to run the ROX desktop, you must also install ROX-Session and the libraries it depends on.
I installed ROX on Slackware 14.2, but it should work on any Linux or BSD system.
First, you must install [ROX-lib2][6] from its repository. True to its philosophy of minimal installs, all you have to do to install ROX-lib2 is download the tarball, [unarchive it][7], and move the **ROX-Lib** directory to **/usr/local/lib**.
Next, you have to install [ROX-Session][8]. This probably needs to be compiled from source code, as it's not likely to be in your software repository. The compile process requires build tools, which ship by default on Slackware but are often omitted in other distributions to save space on the initial download. The names of the packages you must install to build from source code vary depending on your distro, so refer to the documentation for specifics. For example, on Debian-based distributions, you can learn about build requirements in [Debian's wiki][9], and on Fedora-based distributions, refer to [Fedora's docs][10]. Once you have the build tools installed, execute the custom ROX-Session build script:
```
`$ ./AppRun`
```
This manages its own build and installation and prompts you for root permissions to add itself as an option on your login screen.
If you have not installed ROX-Filer from your software repository, do that before continuing.
Together, these components create a complete ROX desktop. To log into your new desktop, log out of your current desktop session. By default, your session manager (KDM, GDM, LightDM, or XDM, depending on your setup) will continue to log you into your previous desktop, so you must override that before logging in.
With SDDM:
![][11]
With GDM:
![][12]
### ROX desktop features
The ROX desktop is simple by default, with a single panel at the bottom of the screen and a shortcut icon to your home directory on the desktop. The panel contains shortcuts to common locations. That's all there is to the ROX desktop, at least as it's configured out of the box. If you want a clock or a calendar or a system tray, you need to find applications that provide them.
![Default ROX desktop][13]
There is no taskbar, as such, but when you minimize a window, it becomes a temporary icon on your desktop. You can click the icon to bring its window back to its former size and placement.
The panel can be modified some, as well. You can place different shortcuts into it and even create your own applets.
There's no application menu, either, nor are there shortcuts to applications in a contextual menu. Instead, you can navigate manually to **/usr/share/applications**, or you can add your application directory or directories to the ROX panel.
![ROX desktop][14]
The ROX desktop's workflow concentrates on being mouse-driven, reminiscent of Mac OS 7.5 and 8. With ROX-filer, you can manage permissions, file management, introspection, script launching, background setting, and nearly anything else you can think of, provided that you're patient enough for the point-and-click style of interaction. For power users, this seems slow, but ROX manages to make it relatively painless and very intuitive.
### App directories, AppRun, and AppImage
The ROX desktop has an elegant convention by which a directory containing a script named **AppRun** is executed as if it were an application. This means that in order to make a ROX app, all you have to do is compile code into a directory, place a script called **AppRun** at the root of that directory to execute the binary you've compiled, and then mark the directory executable. ROX-Filer displays a directory configured in the manner you set with a special icon and color. When you click on an app directory, ROX-Filer automatically runs the **AppRun** script inside. It looks and behaves exactly like an application that has been installed, but it's local to the user's home directory and requires no special permissions.
This is a convenience feature, but it's one of those small features that feels great when you use it because it's so easy to implement. It's by no means essential, and it's only a few steps ahead of building an application locally, hiding the directory somewhere out of the way, and drumming up a quick **.desktop** file to act as your launcher. However, the concept of an application directory has been [cited][15] as an inspiration for the [AppImage][16] packaging system.
### Why you should try ROX desktop
Getting ROX set up and usable is somewhat difficult, and it appears to truly be abandoned. However, its legacy lives on in many ways today, and it's a fascinating and fun bit of Linux history. It may not become your primary desktop, but if you're looking for a fun trip back in time, then ROX is well worth a go. Explore it, customize it, and see what clever ideas it contains. There may yet be hidden gems that the open source community can benefit from.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/linux-rox-desktop
作者:[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/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
[2]: http://rox.sourceforge.net/desktop/
[3]: https://www.riscosopen.org/content/
[4]: http://rox.sourceforge.net/desktop/ROX-Filer
[5]: http://roxterm.sourceforge.net/
[6]: http://rox.sourceforge.net/desktop/ROX-Lib
[7]: https://opensource.com/article/17/7/how-unzip-targz-file
[8]: http://rox.sourceforge.net/desktop/ROX-Session.html
[9]: https://wiki.debian.org/BuildingTutorial
[10]: https://docs.pagure.org/docs-fedora/installing-software-from-source.html
[11]: https://opensource.com/sites/default/files/advent-kdm_0.jpg
[12]: https://opensource.com/sites/default/files/advent-gdm_1.jpg
[13]: https://opensource.com/sites/default/files/uploads/advent-rox.jpg (Default ROX desktop)
[14]: https://opensource.com/sites/default/files/uploads/advent-rox-custom.jpg (ROX desktop)
[15]: https://github.com/AppImage/AppImageKit/wiki/AppDir
[16]: https://appimage.org/

View File

@@ -0,0 +1,157 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Setting up the sway window manager on Fedora)
[#]: via: (https://fedoramagazine.org/setting-up-the-sway-window-manager-on-fedora/)
[#]: author: (George Luiz Maluf https://fedoramagazine.org/author/georgelmaluf/)
Setting up the sway window manager on Fedora
======
![][1]
Sometimes during a critical activity, working with overlapping windows becomes counterproductive. You might find a tiled window manager like sway to be a good alternative.
Sway is a tiling Wayland compositor. It has the advantage of compatibility with an existing [i3 configuration][2], so you can use it to replace i3 and use Wayland as the display protocol.
### Installing sway
To setup sway, open a new terminal and type the following command
```
sudo dnf install sway
```
Once the installation is completed, log out of your user session. At the login screen, select your user account. Before you enter your password, choose _Sway_ from the menu, as shown in the following image.
![][3]
After login, your desktop looks like this:
![][4]
### Configuration
To begin configuration, copy the default config into your user directory. Do that using the following commands.
```
mkdir -p .config/sway
cp /etc/sway/config ~/.config/sway/
```
Sway is highly configurable. Its suggested you read the projects [wiki page][5] to fine tune your settings. For example, to change the keyboard layout, open a new terminal and run this command:
```
$ swaymsg -t get_inputs
[george@mrwhite ~]$ swaymsg -t get_inputs
Input device: VirtualPS/2 VMware VMMouse
Type: Mouse
Identifier: 2:19:VirtualPS/2_VMware_VMMouse
Product ID: 19
Vendor ID: 2
Libinput Send Events: enabled
Input device: VirtualPS/2 VMware VMMouse
Type: Mouse
Identifier: 2:19:VirtualPS/2_VMware_VMMouse
Product ID: 19
Vendor ID: 2
Libinput Send Events: enabled
Input device: AT Translated Set 2 keyboard
Type: Keyboard
Identifier: 1:1:AT_Translated_Set_2_keyboard
Product ID: 1
Vendor ID: 1
Active Keyboard Layout: Portuguese (Brazil)
Libinput Send Events: enabled
```
Copy the identifier keyboard code. Open your _~/.config/sway/config file_ with your text editor and edit the configuration accordingly:
```
## Input configuration
input "1:1:AT_Translated_Set_2_keyboard" {
xkb_layout br
}
```
Save the settings. To reload the configurations, press **Super+Shift+c**. (Typically the **Super** key is mapped to the logo key on a PC.)
### Waybar
Sways default status bar may not have all the functions you want. Fortunately Waybar is a good replacement. To install, run the follow commands. _(Note, however, that COPR is not an official Fedora repository and not supported by the Fedora Project.)_
```
sudo dnf copr enable alebastr/waybar
sudo dnf install waybar
```
Open your _~/.config/sway/config_ file. Edit the bar configuration like this:
```
bar {
swaybar_command waybar
}
```
Reload the configuration and youll now see the waybar in action, as shown below.
![][6]
To customize the waybar, you can visit this [wiki page][7] for more details and ideas.
### Alacritty
Alacritty is a terminal emulator that uses the GPU for rendering, and a good replacement for _urxvt_. To install run the following lines
```
sudo dnf copr enable pschyska/alacritty
sudo dnf install alacritty
```
To enable it as default terminal emulator edit your _~/.config/sway/config_. Change this line:
```
set $term urxvt256c-ml
```
To:
```
set $term alacritty
```
Reload your configuration.
When you open a new terminal with **Super+C**, alacritty will be open as seen in the following image:
![][8]
* * *
_Photo by [Ivan Vranić][9] on [Unsplash][10]._
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/setting-up-the-sway-window-manager-on-fedora/
作者:[George Luiz Maluf][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://fedoramagazine.org/author/georgelmaluf/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/sway-816x345.jpg
[2]: https://fedoramagazine.org/getting-started-i3-window-manager/
[3]: https://fedoramagazine.org/wp-content/uploads/2019/11/sway_login_menu-1024x522.png
[4]: https://fedoramagazine.org/wp-content/uploads/2019/11/sway_desktop_default-1024x522.png
[5]: https://github.com/swaywm/sway/wiki
[6]: https://fedoramagazine.org/wp-content/uploads/2019/11/sway_waybar_default-1024x522.png
[7]: https://github.com/Alexays/Waybar/wiki/Configuration
[8]: https://fedoramagazine.org/wp-content/uploads/2019/11/sway_alacritty-1024x522.png
[9]: https://unsplash.com/@hvranic?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[10]: https://unsplash.com/s/photos/sway?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText

View File

@@ -0,0 +1,116 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (App Highlight: Open Source Disk Partitioning Tool GParted)
[#]: via: (https://itsfoss.com/gparted/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
App Highlight: Open Source Disk Partitioning Tool GParted
======
_**Brief: GParted is an incredibly popular and free partition editor available for Linux distros. Here, we take a look at what it offers in brief.**_
### GParted: A Free &amp; Open-Source GUI-based Partition Manager
![][1]
GParted is undoubtedly one of the [best partition managers for Linux][2] out there. The user interface is very simple and gets the job done.
In some cases, you end up using [GParted][3] to fix or format your USB drive as well. I had a [USB disk which I couldnt format in Ubuntu][4] using the “Disks” app this is where GParted came to the rescue.
So, it is a quite useful tool with a lot of good features. Let me highlight them for you.
Warning!
Playing with disk partitioning is a risky task. Dont do it unless its absolutely necessary. Or else, you might just end up wiping the entire disk.
### Features of GParted
You can do a lot of things with GParted, ranging from a simple format task to important partitioning tasks. Ill highlight the key features with some screenshots to help you know more about it before installing it.
#### Create partition tables
You can create a new partition table for your new disks or erase the content of your existing disk to modify the partition table.
![][5]
You will be able to select msdos, gpt, atari, and a lot more types of partition tables.
#### Create, move, label, delete &amp; modify partitions
You can easily create, label, delete or modify the partitions with a bunch of options available within GParted.
![][6]
Of course, you will have to be careful about what you want to do.
The good thing is that GParted makes sure that you do not directly apply any changes it queues up your selected operations/tasks and asks for another final confirmation before you hit it.
The tick mark symbol ✓on the top allows you to confirm the changes and then only your changes take into effect.
Heres another screenshot for the options you have available for the partitions:
![][7]
#### Attempt data rescue
Apart from editing partitions, you can also try to [recover your lost data in Linux][8] using the “**Attempt Data Rescue**” feature as shown in the screenshot below.
![][9]
It is worth noting that you do not have this feature installed by default you only see the option visible. So, for the data recovery feature to work, you have to install gpart separately using the following command (on Ubuntu/Debian-based distributions):
```
sudo apt install gpart
```
In addition to all the key features, it supports a wide range of storage devices and filesystems. You can learn more about it from the [list of features][10] on their official website.
### Installing GParted on Ubuntu and other Linux distributions
You might have GParted pre-installed. So, make sure to verify that. If you do not have it installed, you can head into the software center to get it installed.
In case you want to use the terminal, simply type in the following command:
```
sudo apt install gparted
```
As I mentioned above, if you want the data recovery option, you should install gpart package in addition to gparted package.
If youre using any other Linux distribution, you can either find it in the respective software manager or simply check out the [official download instructions][11].
[Download GParted][11]
**Wrapping Up**
GParted is a very useful and important tool when it comes to dealing with disk management and partitions. However, you will have to be careful while using it for the obvious reasons.
Have you tried GParted? Which other partitioning tool you use on Linux? Feel free to share your experiences in the comments below.
--------------------------------------------------------------------------------
via: https://itsfoss.com/gparted/
作者:[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://i1.wp.com/itsfoss.com/wp-content/uploads/2019/12/gparted-screenshot.png?ssl=1
[2]: https://itsfoss.com/partition-managers-linux/
[3]: https://gparted.org/
[4]: https://itsfoss.com/format-usb-drive-sd-card-ubuntu/
[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/12/gparted-create-partition-table.png?ssl=1
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/12/gparted-modify-partitions.png?ssl=1
[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/12/gparted-partition-options.png?ssl=1
[8]: https://itsfoss.com/recover-deleted-files-linux/
[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/12/gparted-attempt-data-rescue-feature.png?ssl=1
[10]: https://gparted.org/features.php
[11]: https://gparted.org/download.php

View File

@@ -0,0 +1,103 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Annotate screenshots on Linux with Ksnip)
[#]: via: (https://opensource.com/article/19/12/annotate-screenshots-linux-ksnip)
[#]: author: (Clayton Dewey https://opensource.com/users/cedewey)
在 Linux 上使用 Ksnip 注释截图
======
Ksnip 让你能轻松地在 Linux 中创建和标记截图。
![a checklist for a team][1]
我最近从 MacOS 切换到了 [Elementary OS][2],这是一个专注于易用性和隐私性的 Linux 发行版。作为用户体验设计师和免费软件支持者,我会经常截图并进行注释。在尝试了几种不同的工具之后,到目前为止,我最喜欢的工具是 [Ksnip][3],它是 GPLv2 许可下的一种开源工具。
![Ksnip screenshot][4]
### 安装
使用你首选的包管理器安装 Ksnip。我通过 Apt 安装了它:
```
`sudo apt-get install ksnip`
```
### 配置
Ksnip 有许多配置选项,包括:
* 保存截图的地方
  * 默认截图的文件名
  * 图像采集器行为
  * 光标颜色和宽度
  * 文字字体
你也可以将其与你的 Imgur 帐户集成。
![Ksnip configuration options][5]
### 用法
Ksnip 提供了大量的[功能][6]。我最喜欢的 Ksnip 部分是它拥有我需要的所有注释工具(还有一个我没想到的工具!)。
您可以使用以下注释:
* 钢笔
* 记号笔
* 矩形
* 椭圆
* 文字
你还可以模糊区域来移除敏感信息。还有使用我最喜欢的新工具:用于在界面上表示步骤的带数字的点。
### 关于作者
我非常喜欢 Ksnip因此我联系了作者 [Damir Porobic][7] 来了解有关该项目的更多信息。
当我问到是什么启发了他编写 Ksnip 时,他说:
>“几年前我从 Windows 切换到 Linux却没有了在 Windows 中常用的 Windows Snipping Tool。当时的所有其他截图工具要么很大很多按钮和复杂功能要么缺少诸如注释等关键功能所以我决定编写一个简单的 Windows Snipping Tool 克隆版,但是随着时间的流逝,它开始有越来越多的功能。“
这正是我在评估截图工具时发现的。他花时间构建解决方案并免费共享给他人使用,这真是太好了。
至于 Ksnip 的未来Damir 希望添加全局快捷方式(至少对于 Windows 是这样和用于新截图的选项卡并允许该应用在后台运行。GitHub 上的功能请求列表也越来越多。
### 帮助的方式
Damir 最需要的是帮助开发 Ksnip。他和他的妻子很快就会有孩子了所以他将没有太多的时间放在这个项目上。不过他可以检查和接受拉取请求。
此外,此项目还可以通过 Snap 、Flatpak 以及 MacOS 安装包、Windows 安装包等其他安装方式安装。如果你想提供帮助,请查看 Ksnip 的 README 的 [Contribution][8] 部分。
* * *
_此文章最初发表在 [Agaric Tech Cooperative 的博客][9]上,并经允许重新发布。_
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/annotate-screenshots-linux-ksnip
作者:[Clayton Dewey][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://opensource.com/users/cedewey
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk (a checklist for a team)
[2]: https://elementary.io/
[3]: https://github.com/damirporobic/ksnip
[4]: https://opensource.com/sites/default/files/uploads/ksnip.png (Ksnip screenshot)
[5]: https://opensource.com/sites/default/files/uploads/ksnip-configuration.png (Ksnip configuration options)
[6]: https://github.com/DamirPorobic/ksnip#features
[7]: https://github.com/damirporobic/
[8]: https://github.com/DamirPorobic/ksnip/blob/master/README.md#contribution
[9]: https://agaric.coop/blog/annotate-screenshots-linux-ksnip