mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-03-15 01:50:08 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
4e6fe2046d
76
published/20191125 My top 5 Ansible modules.md
Normal file
76
published/20191125 My top 5 Ansible modules.md
Normal file
@ -0,0 +1,76 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12304-1.html)
|
||||
[#]: subject: (My top 5 Ansible modules)
|
||||
[#]: via: (https://opensource.com/article/19/11/ansible-modules)
|
||||
[#]: author: (Mark Phillips https://opensource.com/users/markp)
|
||||
|
||||
我最喜欢用的 5 个 Ansible 模块
|
||||
======
|
||||
|
||||
> 了解如何通过这些 Ansible 模块实现几乎任何事情。
|
||||
|
||||

|
||||
|
||||
在我成长的时候,我爷爷在他的花园里有一个棚子。他经常会花几个小时在那里制作和修复东西。这是在我们有互联网之前的事情,所以我花了很多时间看他在那个棚子里创造东西。虽然棚子里有很多工具,从钻头到车床到电器配件,还有很多东西我至今都无法辨认,但他使用的只是他手头的一小部分。然而,他能做到的事情似乎永远没有极限。
|
||||
|
||||
我之所以告诉你这个故事,是因为我觉得我的职业生涯是在一个隐喻的棚子里度过的。计算机也是如此多的工具,都在一个狭小(虚拟?)的空间里。而工具棚中又有工具棚 —— 我最喜欢的是 Ansible。最近的 2.9 版本有 3,681 个模块! **3,681 个啊!**当我在 2013 年夏天第一次开始使用 Ansible 时,1.2.1 版本只有 113 个模块,然而,正如[我当时写的][2],我仍然可以实现任何我想象到的东西。
|
||||
|
||||
模块是 Ansible 的支柱,是让重任轻装上阵的齿轮。它们被设计为做好一项工作,从而实现了 [Unix 哲学][3]。我们就是这样来把这么多的模块捆绑在一起,作为乐团的指挥,Ansible 现在有很多乐器可以听从它的指挥。
|
||||
|
||||
回顾一下我多年来的 Ansible 剧本和角色的 Git 仓库,我发现我只用了 35 个模块。这个小的子集被用来构建大型基础设施。不过,我想知道如果用一个更小的子集可以实现什么?当我回顾这 35 个模块时,我在思考,我能否只用 5 个模块就能达到同样的效果。因此,以下是我最喜欢的五个模块,顺序无关。
|
||||
|
||||
### 5. authorized_key
|
||||
|
||||
SSH 是 Ansible 的核心,至少对于除了 Windows 以外的几乎所有其他功能都是如此。在 Ansible 中高效使用 SSH 的关键(没有双关语)是……[密钥][5]!顺便提一下,你可以用 SSH 密钥为安全性做很多非常酷的事情。值得仔细阅读 [sshd 手册页][6]中的 “authorized_keys” 部分。如果你需要精细的用户访问控制,管理 SSH 密钥可能会变得很费力,尽管我可以用接下来的两个我最爱的模块中的任何一个,但我更喜欢使用 [authorized_key][4] 这个模块,因为它[可以通过变量轻松管理][7]。
|
||||
|
||||
### 4. file
|
||||
|
||||
除了显而易见的将文件放置在某个地方的功能外,[file][8] 模块还可以设置所有权和权限。我想说的是,这样一个模块就能带来很多的好处。很大一部分安全问题也与设置权限有关,所以 [file][8] 模块和 [authorized_key][4] 可以很好地配合在一起使用。
|
||||
|
||||
### 3. template
|
||||
|
||||
操作文件内容的方法太多了,我看到很多人都在使用 [lineinfile][10]。我自己也用它做过小任务。但是,[template][9] 模块就清晰多了,因为你维护了整个文件的上下文。我更喜欢以任何人都可以*轻松*理解的方式编写 Ansible 的内容 —— 对我而言,这意味着容易理解正在发生的事情。[template][9] 的使用意味着能够看到你正在放置内容的整个文件、全部你正在改变的变量。
|
||||
|
||||
### 2. uri
|
||||
|
||||
当前发布版中的许多模块利用 Ansible 作为编排工具。它们与另一个服务对话,而不是做一些具体的事情,比如把一个文件放到一个地方。通常,这种对话也是通过 HTTP 进行的。在许多这样的模块出现之前,你*可以*直接使用 [uri][11] 模块对 API 进行编程。它是一个强大的访问工具,可以使你能够做很多事情。在我的 Ansible 虚拟棚子里,我不会少了它。
|
||||
|
||||
### 1. shell
|
||||
|
||||
这是我们工具包里的王牌、瑞士军刀。如果你为如何控制其他东西而非常苦恼,别说,说就是 [shell][12]。有人会说,我们这样说是让 Ansible 成为了 Bash 脚本 —— 但是,我想说的是,这还是有点好处的,因为可以在你的剧本和角色中使用 `name` 参数记录下每一步。对我来说,这就像一个很大的奖励一样。早在我还在做咨询的时候,我曾经帮助一个数据库管理员(DBA)迁移到 Ansible。这位 DBA 并不喜欢改变,对改变工作方法也是推三阻四。于是,为了简化迁移到 Ansible 方式,我们在 Ansible 中使用 [shell][12] 模块调用了一些现有的数据库管理脚本。并在任务中附带了翔实的 `name` 声明。
|
||||
|
||||
通过这五个模块,你可以实现很多事情。是的,为完成特定任务而设计的模块会让你的生活更加轻松。但是,借助简单的工程设计,你几乎可以事半功倍。Ansible 开发者 Brian Coca 是这方面的大师,[他的技巧和窍门讲座][13]总是值得一看。
|
||||
|
||||
* * *
|
||||
|
||||
你觉得我喜欢的五大模块怎么样?如果你也必须限制在这么多模块,你会选择哪五个,为什么?在下面的评论中告诉我吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/11/ansible-modules
|
||||
|
||||
作者:[Mark Phillips][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://opensource.com/users/markp
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mandelbrot_set.png?itok=bmPc0np5
|
||||
[2]: http://probably.co.uk/post/puppet-vs-chef-vs-ansible/
|
||||
[3]: https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well
|
||||
[4]: https://docs.ansible.com/ansible/latest/modules/authorized_key_module.html
|
||||
[5]: https://linux.die.net/man/1/ssh-keygen
|
||||
[6]: https://linux.die.net/man/8/sshd
|
||||
[7]: https://github.com/phips/ansible-demos/blob/3bf59df1eb2390b31b5c42333197e2fbb7fec93f/roles/ansible-users/tasks/main.yml#L35
|
||||
[8]: https://docs.ansible.com/ansible/latest/modules/file_module.html
|
||||
[9]: https://docs.ansible.com/ansible/latest/modules/template_module.html
|
||||
[10]: https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html
|
||||
[11]: https://docs.ansible.com/ansible/latest/modules/uri_module.html
|
||||
[12]: https://docs.ansible.com/ansible/latest/modules/shell_module.html
|
||||
[13]: https://www.ansible.com/ansible-tips-and-tricks
|
@ -1,99 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Devuan Beowulf 3.0 is the Latest Stable Release Based on Debian 10.4 Buster (and Free From systemd))
|
||||
[#]: via: (https://itsfoss.com/devuan-3-release/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Devuan Beowulf 3.0 is the Latest Stable Release Based on Debian 10.4 Buster (and Free From systemd)
|
||||
======
|
||||
|
||||
[Devuan GNU+Linux][1] is a fork of [Debian][2] without [systemd][3]. If you are wondering what’s wrong with systemd — that’s a discussion for another day.
|
||||
|
||||
But, if you are someone who wanted a systemd-free Linux distribution, the release of Devuan Beowulf 3.0 should be good news for you.
|
||||
|
||||
### Devuan Beowulf 3.0: What’s New?
|
||||
|
||||
![][4]
|
||||
|
||||
Devuan is normally appreciated for providing alternative [init][5] software such as [SysV][6].
|
||||
|
||||
In this article, we’ll take a look at the key highlights in Devuan Beowulf 3.0.
|
||||
|
||||
#### Based on Debian 10.4 Buster
|
||||
|
||||
[Debian 10 Buster][7] is undoubtedly an impressive series of releases while Debian 10.4 being the latest.
|
||||
|
||||
And, with Devuan Beowulf 3.0, you’ll be happy to know that the release is based on the latest Debian 10.4 Buster update.
|
||||
|
||||
In case you aren’t aware of it, you may check out the [official announcement post for Debian 10.4 Buster][8] release to know more about it.
|
||||
|
||||
#### Linux Kernel 4.19
|
||||
|
||||
It’s also a great addition to have [Linux Kernel 4.19 LTS][9] baked in the latest release.
|
||||
|
||||
Of course, not the latest because we are in ‘Debian land’ and things are not always latest here but more stable. The new kernel should fix several issues that you may have had with previous releases.
|
||||
|
||||
#### Support For ppc64el Architecture
|
||||
|
||||
The support for [ppc64el][10] may not be a big deal for the most part — but having the support for PowerPC and Power ISA processors is a plus.
|
||||
|
||||
Not to forget, Devuan GNU+Linux already supports i386, amd64, armel, armhf and arm64 architectures.
|
||||
|
||||
#### Added runit & OpenRC as optional alternative
|
||||
|
||||
To consider more init software alternatives, [runit][11] and [openrc][12] is now an option in the latest release.
|
||||
|
||||
#### Other Changes
|
||||
|
||||
In addition to the key highlights mentioned above, you will also find the addition of standalone daemons [eudev][13] and [elogind][14].
|
||||
|
||||
The boot screen, the display manager and the desktop theming also includes subtle changes. For example, the boot menu says “**Debian**” instead of “**Devuan**“.
|
||||
|
||||
You might want to look the [official release notes][15] if you want more technical details on the changes with Devuan Beowulf 3.0.0.
|
||||
|
||||
Trivia
|
||||
|
||||
Devuan releases are named after minor planets. Beowulf is a [minor planet numbered 38086][16].
|
||||
|
||||
### Wrapping Up
|
||||
|
||||
The latest stable release of Devuan Beowulf 3.0 counts as good progress with systemd-free distributions available out there.
|
||||
|
||||
If you want to support Devuan project, please make some [contribution to their project either financially][17] or [by other means][18].
|
||||
|
||||
What do you think about this release? Feel free to let me know what you think in the comments below!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/devuan-3-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://devuan.org
|
||||
[2]: https://www.debian.org
|
||||
[3]: https://en.wikipedia.org/wiki/Systemd
|
||||
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/devuan-beowulf.jpg?ssl=1
|
||||
[5]: https://en.wikipedia.org/wiki/Init
|
||||
[6]: https://wiki.archlinux.org/index.php/SysVinit
|
||||
[7]: https://itsfoss.com/debian-10-buster/
|
||||
[8]: https://www.debian.org/News/2020/20200509
|
||||
[9]: https://itsfoss.com/linux-kernel-4-19-lts-release/
|
||||
[10]: https://en.wikipedia.org/wiki/Ppc64
|
||||
[11]: https://en.wikipedia.org/wiki/Runit
|
||||
[12]: https://en.wikipedia.org/wiki/OpenRC
|
||||
[13]: https://wiki.gentoo.org/wiki/Eudev
|
||||
[14]: https://wiki.gentoo.org/wiki/Elogind
|
||||
[15]: https://files.devuan.org/devuan_beowulf/Release_notes.txt
|
||||
[16]: https://en.wikipedia.org/wiki/Meanings_of_minor_planet_names:_38001%E2%80%9339000#086
|
||||
[17]: https://devuan.org/os/donate
|
||||
[18]: https://dev1galaxy.org/viewtopic.php?pid=1380#p1380
|
@ -0,0 +1,106 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Hurry up! $100 PineTab Linux Tablet is Finally Available for Pre-order)
|
||||
[#]: via: (https://itsfoss.com/pinetab-linux-tablet/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Hurry up! $100 PineTab Linux Tablet is Finally Available for Pre-order
|
||||
======
|
||||
|
||||
Most of you must be already aware of Pine64’s flagship products [PinePhone][1] and Pinebook (or [Pinebook Pro][2]).
|
||||
|
||||
PineTab was planned to be made available back in 2019— however, PinePhone and Pinebook production was prioritized over it. Also, due to the factory lines closing for COVID-19 pandemic, the plan for PineTab was further postponed.
|
||||
|
||||
Finally, you will be happy to know that you can now pre-order the **PineTab Linux tablet** for just **$100.**
|
||||
|
||||
Even though PineTab is meant for early adopters, I’ll give you a brief description of its specifications and what you can expect it to do.
|
||||
|
||||
### PineTab specification
|
||||
|
||||
![][3]
|
||||
|
||||
PineTab is a Linux tablet for $100 with which you can also attach a keyboard and some other modules to make the most out of it.
|
||||
|
||||
So, for just $100, it isn’t aiming to be “just another tablet” but something more functional for the users who prefer to have a useful tablet.
|
||||
|
||||
Before we talk more about it, let’s run down through the specifications:
|
||||
|
||||
* Display: 10-inch 720p IPS Screen
|
||||
* Quad-core A64 SoC
|
||||
* 2 GB LPDDR3 RAM
|
||||
* 2 MP front-facing camera and 5 MP rear camera
|
||||
* 64 GB eMMC flash storage
|
||||
* SD Card support
|
||||
* USB 2.0, USB-OTG, Digital video output, Micro USB
|
||||
* 6000mAh Battery
|
||||
|
||||
|
||||
|
||||
You can also add a magnetic backlit keyboard with PineTab for an additional $20.
|
||||
|
||||
You can see it in action here:
|
||||
|
||||
[Subscribe to our YouTube channel for more Linux videos][4]
|
||||
|
||||
For the first batch of PineTab, they are shipping the tablet with [UBports Ubuntu Touch][5]. In their [recent blog post][6], Pine64 also clarified why they chose UBports Ubuntu Touch:
|
||||
|
||||
> The reason for this choice being that Ubuntu Touch works well for a traditional tablet use-case and, at the same time, converts into a more traditional desktop experience when the magnetic keyboard is attached.
|
||||
|
||||
They’ve also mentioned that the PineTab’s software will be convergent with both PinePhone and PineBook.
|
||||
|
||||
### PineTab Expansion Options
|
||||
|
||||
![][7]
|
||||
|
||||
To expand the functionality of PineTab, there’s an adapter board available on which you will be able to attach the expansions you want.
|
||||
|
||||
The adapter board will already be present inside, you just need to remove the back cover, work on a single screw to swap/add expansions.
|
||||
|
||||
The following expansions will be available to start with:
|
||||
|
||||
* M.2 SATA SSD add-on
|
||||
* M.2 LTE (and GPS) add-on
|
||||
* [LoRa][8] module add-on
|
||||
* RTL-SDR module add-on
|
||||
|
||||
|
||||
|
||||
It is worth noting that you only use any one of the expansions at a time no matter how many expansions you have attached to the board.
|
||||
|
||||
Some extensions like LTE or LoRa module will probably make PineTab a great point-of-sales terminal as well.
|
||||
|
||||
As of now, there’s no information on what it would cost per add-on for the expansion board — but hopefully we’ll get to know more about the details right before the pre-order starts.
|
||||
|
||||
### How to get PineTab Linux tablet
|
||||
|
||||
PineTab is now available for pre-order. If you are planning to get one, you should hurry up. From my experience with Pine devices, the pre-order might close in a couple of days. You can order it from their website:
|
||||
|
||||
[Pre-order PineTab][9]
|
||||
|
||||
What are your thoughts on PineTab? Are you going to order one when it goes live? Let me know your thoughts in the comments.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/pinetab-linux-tablet/
|
||||
|
||||
作者:[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/pinephone/
|
||||
[2]: https://itsfoss.com/pinebook-pro/
|
||||
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/pinetab-keyboard.jpg?ssl=1
|
||||
[4]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
|
||||
[5]: https://ubports.com/
|
||||
[6]: https://www.pine64.org/2020/05/15/may-update-pinetab-pre-orders-pinephone-qi-charging-more/
|
||||
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/pinetab-expansion-board.jpg?fit=800%2C161&ssl=1
|
||||
[8]: https://en.wikipedia.org/wiki/LoRa#LoRaWAN
|
||||
[9]: https://store.pine64.org/?product=pinetab-10-1-linux-tablet-with-detached-backlit-keyboard
|
@ -0,0 +1,87 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (8 steps to make your next meeting more productive)
|
||||
[#]: via: (https://opensource.com/article/20/6/meeting-productivity)
|
||||
[#]: author: (Emily Brand https://opensource.com/users/emily-brand)
|
||||
|
||||
8 steps to make your next meeting more productive
|
||||
======
|
||||
Make your meeting a productivity powerhouse—not a time waster—with these
|
||||
tips.
|
||||
![interviewing for a job in a conference room][1]
|
||||
|
||||
Many organizations' cultures encourage team meetings, as they can be a valuable time for groups of employees to collaborate and innovate together. However, too often, meetings are unproductive, repetitive, and waste valuable time that employees could use for work. According to a Korn Ferry survey, 67% of employees claim that their job performance is [negatively impacted][2] by spending too much time in meetings. That number is far too high for modern companies interested in growth and productivity.
|
||||
|
||||
Because all types of organizations, including open source communities, depend on effective meetings and communication standards to get things done, many try to instill more effective meeting environments. For example, some carve out time each week when meetings are not allowed, so the company can reach a flow state. While this is helpful during that time, the rest of the week may be wasted by unproductive meetings.
|
||||
|
||||
The following steps can help make meetings more efficient and create a focused, productive workforce.
|
||||
|
||||
### Before the meeting
|
||||
|
||||
#### 1\. Be prepared
|
||||
|
||||
Too many meetings begin with the question, "why are we here?" One way to make a meeting more productive is to ensure every participant understands the meeting's purpose before the meeting. The agenda should include the start and end time, the topics that will be covered, and a short description written by the organizer answering that "why" question. The easiest way to communicate these things is to share the meeting's agenda in the invitation, and certainly enough time before the meeting that participants can familiarize themselves with the documents before starting. This enables everyone to think about the meeting's goal, plan ahead, and arrive prepared to work toward that goal.
|
||||
|
||||
#### 2\. Is this necessary?
|
||||
|
||||
To prevent unnecessary meetings, everyone must understand the intended outcomes in advance. If the organizer is unable to articulate intentional goals and outcomes, then the meeting should be canceled or postponed until that happens. Also, think about whether the meeting's outcomes and decisions could be completed in an asynchronous fashion (with chat or email).
|
||||
|
||||
Thinking critically about the purpose of the meeting and the people who can contribute to that goal helps organizers and participants stay on task during the meeting. As Krystal D'Costa writes in _Scientific American_, "Since spectators aren't grounded in the project or invested in the outcome, they often derail the meeting." If you're an attendee and don't understand the meeting's purpose, don't be afraid to ask the organizer if you need to be there.
|
||||
|
||||
#### 3\. Keep people engaged remotely
|
||||
|
||||
For long-form remote meetings (beyond basic update calls), use videoconferencing to ensure attendance, accountability, and engagement. A full 93% of communication is nonverbal, and video meetings take advantage of that fact for productivity. Also, it is easy to disengage during a phone meeting by staying on mute or participating as little as possible while working on other things. This behavior perpetuates the cycle of unproductive meetings.
|
||||
|
||||
Videoconferencing increases meeting productivity, so using this collaboration method for remote meetings will have a major impact on the success of decisions going forward. Running productive remote meetings is especially important for open source communities with volunteers spread across geography trying to give back to the project. There are several [open source videoconferencing][3] tools.
|
||||
|
||||
### During the meeting
|
||||
|
||||
#### 1\. Encourage mindfulness
|
||||
|
||||
Most people are running to and from meetings (literally and figuratively), which causes a lack of focus. A proven practice to encourage meeting participants to re-engage and be mindful is to begin every meeting with [at least 90 seconds][4] of technology-free silence. This will allow everybody to switch gears so they can focus on the current meeting. This is a good time to display the meeting agenda and brief on a screen in the meeting room to remind everyone of its goals and purpose.
|
||||
|
||||
#### 2\. Begin with agreement
|
||||
|
||||
Before beginning, verify that everyone understands the meeting's objectives and the reason they are there. You can do this with a verbal yes in a small group or a non-verbal hand raise in a larger group. If there is any disagreement or confusion regarding the purpose of the meeting, one tangent or participant may sidetrack the entire meeting. This can lead to separate conversations later, which further draws everyone away from the larger picture and the original meeting goals.
|
||||
|
||||
#### 3\. Be conscious of time constraints
|
||||
|
||||
Every meeting should have a stated start and end time. Once a meeting reaches (or worse, exceeds) the allotted time, participants will begin to lose focus and start thinking about the next thing on their to-do list. By ending meetings five minutes early, attendees will have time to reflect on their decisions with a sense of calmness, which is key to ending a meeting with purpose.
|
||||
|
||||
#### 4\. Identify action items
|
||||
|
||||
During the meeting, be sure to establish any follow-up that will be needed, including identifying someone to lead each task (or to assign it if no one volunteers). In addition, assign someone in the room to provide status reports on that task going forward to ensure accountability. Reiterate all action items before the end of the meeting to get consensus on each task and so that people claim purposeful responsibility for their assignments.
|
||||
|
||||
### After the meeting
|
||||
|
||||
#### 1\. Verify action items and next steps
|
||||
|
||||
At the end of the meeting, someone should send out the action items and who owns them to all attendees so that everyone knows what their tasks are. Between meetings and official reports, tracking tools like Trello and its [open source alternatives][5] can help everyone track the ongoing status of action items.
|
||||
|
||||
### Some changes are better than none
|
||||
|
||||
Depending on your line of work, who you are meeting with, or the number of people in a meeting, it can be very difficult to implement all these changes. Even so, even implementing a few can dramatically increase productivity.
|
||||
|
||||
It is tempting to banish meetings altogether when the load is overwhelming and the productivity is low, but that is not plausible. Instead, enforcing productivity through these steps is well within your control as a meeting host or attendee.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/6/meeting-productivity
|
||||
|
||||
作者:[Emily Brand][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/emily-brand
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team-meeting-notebook-conference-brainstorm.png?itok=Rb_rv8-d (interviewing for a job in a conference room)
|
||||
[2]: https://www.cnbc.com/2019/11/17/67percent-of-workers-say-spending-too-much-time-in-meetings-distracts-them.html
|
||||
[3]: https://opensource.com/article/20/5/open-source-video-conferencing
|
||||
[4]: https://www.inc.com/chris-matyszczyk/this-is-astonishing-amount-of-time-it-takes-to-calm-down-when-youre-angry-according-to-a-police-organization.html
|
||||
[5]: https://opensource.com/alternatives/trello
|
@ -1,74 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (My top 5 Ansible modules)
|
||||
[#]: via: (https://opensource.com/article/19/11/ansible-modules)
|
||||
[#]: author: (Mark Phillips https://opensource.com/users/markp)
|
||||
|
||||
My top 5 Ansible modules
|
||||
======
|
||||
Learn how to achieve almost anything with these Ansible modules.
|
||||
![][1]
|
||||
|
||||
When I was growing up, my grandfather had a shed in his garden. He would spend hours in there, making and fixing things. This was way before we had the internet, so I spent a lot of time studying him creating things in that shed. Although the shed was full of many tools, from drills to lathes to electrical gubbins and lots of things I doubt I could identify even today, he made use of only a tiny subset of what he had at hand. Yet there never seemed to be limits to what he could achieve.
|
||||
|
||||
I tell you that story because I feel like my career has been spent in a metaphorical shed. Computers are so many tools, all in a small (virtual?) space. And there are tool sheds within tool sheds—my favourite being Ansible. The recent 2.9 release ships with 3,681 modules! **3,681!** When I first started using Ansible in the summer of 2013, version 1.2.1 had just 113 modules, yet, as [I wrote at the time][2], I could still achieve anything I imagined.
|
||||
|
||||
Modules are the backbone of Ansible, the gears to make light of heavy lifting. They're designed to do one job well, thus realising [the Unix philosophy][3]. This is how we've come to bundle so many of them; Ansible as the conductor of the orchestra now has a lot of instruments at its command.
|
||||
|
||||
Reviewing a Git repository of my Ansible plays and roles over the years reveals that I have used just 35 modules. This small subset was used to build large infrastructures. I wonder what could be achieved with an even smaller subset, though? As I reviewed those 35, I pondered if I could achieve the same results with only five modules at my disposal. So here are my five favourite modules, in a rather tenuous order of precedence.
|
||||
|
||||
### 5. [authorized_key][4]
|
||||
|
||||
Secure shell (SSH) is at the heart of Ansible, at least for almost everything besides Windows. Key (no pun intended) to using SSH efficiently with Ansible is… [keys][5]! Slight aside—there are a lot of very cool things you can do for security with SSH keys. It's worth perusing the **authorized_keys** section of the [sshd manual page][6]. Managing SSH keys can become laborious if you're getting into the realms of granular user access, and although we could do it with either of my next two favourites, I prefer to use the module because it [enables easy management through variables][7].
|
||||
|
||||
### 4. [file][8]
|
||||
|
||||
Besides the obvious function of placing a file somewhere, the **file** module also sets ownership and permissions. I'd say that's a lot of _bang for your buck_ with one module. I'd proffer a substantial portion of security relates to setting permissions too, so the **file** module plays nicely with **authorized_keys**.
|
||||
|
||||
### 3. [template][9]
|
||||
|
||||
There are so many ways to manipulate the contents of files, and I see lots of folk use **[lineinfile][10]**. I've used it myself for small tasks. However, the **template** module is so much clearer because you maintain the entire file for context. My preference is to write Ansible content in such a way that anyone can understand it _easily_—which to me means not making it hard to understand what is happening. Use of **template** means being able to see the entire file you're putting into place, complete with the variables you are using to change pieces.
|
||||
|
||||
### 2. [uri][11]
|
||||
|
||||
Many modules in the current distribution leverage Ansible as an orchestrator. They talk to another service, rather than doing something specific like putting a file into place. Usually, that talking is over HTTP too. In the days before many of these modules existed, you _could_ program an API directly using the **uri** module. It's a powerful access tool, enabling you to do a lot. I wouldn't be without it in my fictitious Ansible shed.
|
||||
|
||||
### 1. [shell][12]
|
||||
|
||||
The joker card in our pack. The Swiss Army Knife. If you're absolutely stuck for how to control something else, use **shell**. Some will argue we're now talking about making Ansible a Bash script—but, I would say it's still better because with the use of the **name** parameter in your plays and roles, you document every step. To me, that's as big a bonus as anything. Back in the days when I was still consulting, I once helped a database administrator (DBA) migrate to Ansible. The DBA wasn't one for change and pushed back at changing working methods. So, to ease into the Ansible way, we called some existing DB management scripts from Ansible using the **shell** module. With an informative **name** statement to accompany the task.
|
||||
|
||||
You can achieve a lot with these five modules. Yes, modules designed to do a specific task will make your life even easier. But with a smidgen of engineering simplicity, you can achieve a lot with very little. Ansible developer Brian Coca is a master at it, and [his tips and tricks talk][13] is always worth a watch.
|
||||
|
||||
* * *
|
||||
|
||||
What do you think about my top five? What five modules would you pick and why, if you were so limited? Let me know in the comments below!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/11/ansible-modules
|
||||
|
||||
作者:[Mark Phillips][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/markp
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mandelbrot_set.png?itok=bmPc0np5
|
||||
[2]: http://probably.co.uk/post/puppet-vs-chef-vs-ansible/
|
||||
[3]: https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well
|
||||
[4]: https://docs.ansible.com/ansible/latest/modules/authorized_key_module.html
|
||||
[5]: https://linux.die.net/man/1/ssh-keygen
|
||||
[6]: https://linux.die.net/man/8/sshd
|
||||
[7]: https://github.com/phips/ansible-demos/blob/3bf59df1eb2390b31b5c42333197e2fbb7fec93f/roles/ansible-users/tasks/main.yml#L35
|
||||
[8]: https://docs.ansible.com/ansible/latest/modules/file_module.html
|
||||
[9]: https://docs.ansible.com/ansible/latest/modules/template_module.html
|
||||
[10]: https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html
|
||||
[11]: https://docs.ansible.com/ansible/latest/modules/uri_module.html
|
||||
[12]: https://docs.ansible.com/ansible/latest/modules/shell_module.html
|
||||
[13]: https://www.ansible.com/ansible-tips-and-tricks
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -0,0 +1,241 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (5 ways to examine the content of files on Linux)
|
||||
[#]: via: (https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-of-files-on-linux.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
5 ways to examine the content of files on Linux
|
||||
======
|
||||
How to use the cat, more, head and tail commands to look at the content of Linux files, not just text files.
|
||||
[mari lezhava / Unsplash][1] [(CC0)][2]
|
||||
|
||||
Linux provides many commands for examining the contents of files including **cat**, **more,** **head** and **tail,** but that's just a start.
|
||||
|
||||
For one thing, even the most obvious commands have a lot more options than many Linux users ever get around to using. And there are some less obvious commands that offer some unique features. In this post, we’ll both at commands for viewing the contents of files and options for tailoring those views to better cater to your needs.
|
||||
|
||||
### cat
|
||||
|
||||
The cat command sends the entire contents of text files to your terminal window for viewing. In fact, if you type “cat” followed by the name of a file with thousands of lines, those lines will whiz by your window so fast, you won’t be able to make out much more of it than the last screenful of text. Yet, as familiar as the cat command is to Linux users, even this basic command provides a lot of useful options such as numbering the lines in the output that many of us likely haven’t ever used. To expand on that, not only can you number lines; you have some choices in how you do the numbering.
|
||||
|
||||
Numbering every line looks like this:
|
||||
|
||||
```
|
||||
$ cat -n msg
|
||||
1 Hello --
|
||||
2
|
||||
3 I hope you are having a wonderful day!
|
||||
4
|
||||
5
|
||||
6 That's it for ... now
|
||||
7
|
||||
8 bye!
|
||||
9
|
||||
10 s.
|
||||
```
|
||||
|
||||
You can also number only lines with content. Note that a line containing only blanks is not considered “empty” for this command and would be numbered.
|
||||
|
||||
```
|
||||
$ cat -b msg
|
||||
1 Hello --
|
||||
|
||||
2 I hope you are having a wonderful day!
|
||||
|
||||
|
||||
3 That's it for ... now
|
||||
|
||||
4 bye!
|
||||
|
||||
5 s.
|
||||
```
|
||||
|
||||
The cat command allows you to ignore repeated blank lines with the -s option, but you have to add another command to suppress blanks lines altogether.
|
||||
|
||||
```
|
||||
$ cat -s msg
|
||||
Hello --
|
||||
|
||||
I hope you are having a wonderful day!
|
||||
|
||||
That's it for ... now
|
||||
|
||||
bye!
|
||||
|
||||
s.
|
||||
```
|
||||
|
||||
To ignore all of the blank lines, just pipe the output from **cat** to a **grep** command as follows. The dot (.) matches text including blank characters, so it will display lines that contain only blanks and only look empty.
|
||||
|
||||
```
|
||||
$ cat msg | grep .
|
||||
Hello --
|
||||
I hope you are having a wonderful day!
|
||||
That's it for ... now
|
||||
bye!
|
||||
s.
|
||||
```
|
||||
|
||||
The **-E** optoin provides a visual cue to show whether there are extra blanks at the ends of lines by sticking a $ at the end of every line.
|
||||
|
||||
```
|
||||
$ cat -E msg
|
||||
Hello --$
|
||||
$
|
||||
I hope you are having a wonderful day! $
|
||||
$
|
||||
$
|
||||
That's it for ... now$
|
||||
$
|
||||
bye!$
|
||||
$
|
||||
s.$
|
||||
```
|
||||
|
||||
With **-A**, you get both the $ characters at the end of each line and tabs showing up as **^I** rather than empty space.
|
||||
|
||||
```
|
||||
$ cat -A msg
|
||||
Hello --$
|
||||
$
|
||||
I hope you are having a wonderful day!$
|
||||
$
|
||||
$
|
||||
That’s it for …^Inow$
|
||||
$
|
||||
bye!$
|
||||
$
|
||||
s.$
|
||||
```
|
||||
|
||||
### Displaying portions of files with head and tail
|
||||
|
||||
The **head** and **tail** commands show the tops or bottoms of files and default to ten lines. You can specify a different number of lines to view by using strings like -3 (show 3 lines) or -11 (show 11 lines). The **tail** command works the same way as **head** but displays the bottoms of files rather than the tops.
|
||||
|
||||
```
|
||||
$ head -3 msg
|
||||
Hello --
|
||||
I hope you are having a wonderful day!
|
||||
$ tail -3 msg
|
||||
bye!
|
||||
|
||||
s.
|
||||
```
|
||||
|
||||
You can also combine **head** and **tail** commands to view text between the tops of bottoms of files. You just have to pick your starting point and how many lines you want to see. In this example, the command would display the second hundred lines in a file and, with **cat**'s help, numbering those lines.
|
||||
|
||||
```
|
||||
$ cat -b mybigfile | head -200 | tail -100
|
||||
101 Invoice #2020-06-07a sent to vendor
|
||||
...
|
||||
```
|
||||
|
||||
### Browsing text a screenful at a time with more or less
|
||||
|
||||
The **more** command is an obvious choice for browsing through a file’s content a screenful at a time while **less** adds the ability to move up and down in a file by using the up and down keyboard arrows so that you can start scanning and then back up in the file.
|
||||
|
||||
### Looking at text files two ways at once with od
|
||||
|
||||
The **od** (octal dump) command allows you to view a file both as normal text and as a series of ASCII values (i.e., how that text is actually encoded in the files). As you can see in the example below, the numbered lines show the numeric ASCII values and the alternate lines show the text and non-printable characters.
|
||||
|
||||
```
|
||||
$ od -bc msg
|
||||
0000000 110 145 154 154 157 040 055 055 012 012 111 040 150 157 160 145
|
||||
H e l l o - - \n \n I h o p e
|
||||
0000020 040 171 157 165 040 141 162 145 040 150 141 166 151 156 147 040
|
||||
y o u a r e h a v i n g
|
||||
0000040 141 040 167 157 156 144 145 162 146 165 154 040 144 141 171 041
|
||||
a w o n d e r f u l d a y !
|
||||
0000060 012 012 012 124 150 141 164 047 163 040 151 164 040 146 157 162
|
||||
\n \n \n T h a t ' s i t f o r
|
||||
0000100 040 056 056 056 011 156 157 167 012 012 142 171 145 041 012 012
|
||||
. . . \t n o w \n \n b y e ! \n \n
|
||||
0000120 163 056 012
|
||||
s . \n
|
||||
```
|
||||
|
||||
Notice how newline characters are shown as **\n** (octal 012) and tabs are shown as **\t** (octal 011).
|
||||
|
||||
One of the especially helpful uses of the **od** command is for looking at non-text files for information that identifies the file types. In this case, we see the **JFIF** (JPEG File Interchange Format) label that identifies it as a jpg file to commands like **file** that report on file types. There's a lot of other useful information in there as well, especially if you're curious about how these files are formatted.
|
||||
|
||||
In this next command, we are looking at the beginning portion of a jpg file.
|
||||
|
||||
```
|
||||
$ od -bc arrow.jpg | head -12
|
||||
0000000 377 330 377 340 000 020 112 106 111 106 000 001 001 000 000 001
|
||||
377 330 377 340 \0 020 J F I F \0 001 001 \0 \0 001
|
||||
0000020 000 001 000 000 377 333 000 103 000 003 002 002 002 002 002 003
|
||||
\0 001 \0 \0 377 333 \0 C \0 003 002 002 002 002 002 003
|
||||
0000040 002 002 002 003 003 003 003 004 006 004 004 004 004 004 010 006
|
||||
002 002 002 003 003 003 003 004 006 004 004 004 004 004 \b 006
|
||||
0000060 006 005 006 011 010 012 012 011 010 011 011 012 014 017 014 012
|
||||
006 005 006 \t \b \n \n \t \b \t \t \n \f 017 \f \n
|
||||
0000100 013 016 013 011 011 015 021 015 016 017 020 020 021 020 012 014
|
||||
\v 016 \v \t \t \r 021 \r 016 017 020 020 021 020 \n \f
|
||||
0000120 022 023 022 020 023 017 020 020 020 377 333 000 103 001 003 003
|
||||
022 023 022 020 023 017 020 020 020 377 333 \0 C 001 003 003
|
||||
```
|
||||
|
||||
If we were to ask the **file** command for information on this image file, we might see something like this. The file command is pulling all this descriptive information from data at the beginning of the file.
|
||||
|
||||
```
|
||||
$ file arrow.jpg
|
||||
arrow.png: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 500x375, components 3
|
||||
```
|
||||
|
||||
### Looking at files as text-based images with jp2a
|
||||
|
||||
If you are limited to the command line and want to get an idea what a particular image file contains, you can use a tool like **jp2a** (jpeg to ascii) to give you a character rendition. How recognizable the image will be in this format depends on the file. Don’t expect much as the version of the image you will see is going to put “low res” to the test! This one’s a very low resolution emperor penguin.
|
||||
|
||||
```
|
||||
$ jp2a Emperor_Penguin.jpg
|
||||
MMMMMMMMWOdkNMMMMMMMMMMMMMMMMMMM
|
||||
MMMXK0kc.... ,OKMMMMMMMMMMMMMMMM
|
||||
MMNK0Ol... :Xx'dNMMMMMMMMMMMMM
|
||||
MMMMMMMd;lx00Oo. ..xMMMMMMMMMMMM
|
||||
MMMMMMK.OXMMMMMN,...lMMMMMMMMMMM
|
||||
MMMMMMx'KXNNMMMMK....0MMMMMMMMMM
|
||||
MMMMMMx:kkKNWWMMMl.. 'NMMMMMMMMM
|
||||
MMMMMMddx0NNNWMMMK'...;NMMMMMMMM
|
||||
MMMMMMck0NNWWWWWMMd ..lMMMMMMMM
|
||||
MMMMMM.d0KXNWWWWMMo ...WMMMMMMM
|
||||
MMMMMM.xOXNNWNMMMW. ....KMMMMMMM
|
||||
MMMMMM'kKNKWXWMMMK ..'.0MMMMMMM
|
||||
MMMMMMxckXNNNNMMMX .:..XMMMMMMM
|
||||
MMMMMMW;xKNWWWMMMM. .;. NMMMMMMM
|
||||
MMMMMMMok0NNWNWMMMx .l..MMMMMMMM
|
||||
MMMMMMMkxOKXWXNMMMMl.:'dMMMMMMMM
|
||||
MMMMMMM0dKOdKXXNMMMMNx,WMMMMMMMM
|
||||
MMMMMMMWoKxldXKNNMMMMM;MMMMMMMMM
|
||||
MMMMMMMMxxxxdNWNXNMMMM;MMMMMMMMM
|
||||
MMMMMMMMxOcoo0XOOOOWMW,kMMMMMMMM
|
||||
MMMMMMM0xK;.cO0dNX:0XXd;NMMMMMMM
|
||||
MMMNkdd:,'ldXXO0xl;x0kx:;lKMMMMM
|
||||
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
||||
```
|
||||
|
||||
#### Wrap-Up
|
||||
|
||||
There are quite a few commands on Linux for examining the content of files in various ways. Some have options which can prove very helpful when you need to manipulate file contents. Others are just … interesting.
|
||||
|
||||
Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-of-files-on-linux.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][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/Sandra-Henry_Stocker/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://unsplash.com/photos/q65bNe9fW-w
|
||||
[2]: https://creativecommons.org/publicdomain/zero/1.0/
|
||||
[3]: https://www.facebook.com/NetworkWorld/
|
||||
[4]: https://www.linkedin.com/company/network-world
|
@ -0,0 +1,193 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Concise data plotting in Python with Altair)
|
||||
[#]: via: (https://opensource.com/article/20/6/altair-python)
|
||||
[#]: author: (Shaun Taylor-Morgan https://opensource.com/users/shaun-taylor-morgan)
|
||||
|
||||
Concise data plotting in Python with Altair
|
||||
======
|
||||
Altair offers an elegant interface and its own plotting language in a
|
||||
Python libraries
|
||||
![metrics and data shown on a computer screen][1]
|
||||
|
||||
The [plotting libraries][2] available in Python offer multiple ways to present data according to your preferences, whether you prize flexibility, design, ease-of-use, or a particular style.
|
||||
|
||||
Plotting in Altair delivers a different solution than others which I find to be simpler as the amount of plotting done scales. It has an elegant interface, thanks to [Vega][3], the declarative plotting language that allows you to define what your plots should look like, rather than writing loops and conditionals to construct them.
|
||||
|
||||
### Fluent in plotting
|
||||
|
||||
I compare each Python plotting library by plotting the same multi-bar plot. Before we go further, note that you may need to tune your Python environment to get this code to run, including the following.
|
||||
|
||||
* Installing a recent version of Python (instructions for [Linux][4], [Mac][5], and [Windows][6])
|
||||
* Verify that version of Python works with the libraries used in the tutorial
|
||||
|
||||
|
||||
|
||||
The data is available online and can be imported using pandas:
|
||||
|
||||
|
||||
```
|
||||
import pandas as pd
|
||||
df = pd.read_csv('<https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv>')
|
||||
```
|
||||
|
||||
Now we're ready to go. As a point of comparison, this is the plot we made in [Matplotlib][7]:
|
||||
|
||||
![Matplotlib UK election results][8]
|
||||
|
||||
The Matplotlib plot took 16 lines of code to create, including manually calculating the positions of each bar.
|
||||
|
||||
Here's how to make a similar plot in Altair:
|
||||
|
||||
|
||||
```
|
||||
import altair as alt
|
||||
|
||||
chart = alt.Chart(df).mark_bar().encode(
|
||||
x='party',
|
||||
y='seats',
|
||||
column='year',
|
||||
color='party',
|
||||
)
|
||||
|
||||
chart.save('altair-elections.html')
|
||||
```
|
||||
|
||||
Much more concise! Just like [Seaborn][9], Altair works with data that has one column per variable ([Long Form][10]). This allows you to map each variable onto an aspect of the plot—Altair calls these aspects "channels." In our case, we want one bar per `party` on the `x`-axis, we want the `seats` each party won on the `y`-axis, and we want to group the bars into `column`s by `year`. We also want to `color` the bars by `party`. That's how you would describe it in words, and it's exactly what the code says!
|
||||
|
||||
Here's what the plot looks like:
|
||||
|
||||
![Altair plot with default styling][11]
|
||||
|
||||
### Tweaking the style
|
||||
|
||||
That's not too far from what we want. The main difference from the Matplotlib plot is that each Altair `year` group is displayed with a little white space in between—this is just a feature of Altair's multi-bar plots, and it's not a problem.
|
||||
|
||||
However, there are a few other little style improvements that we do want to make.
|
||||
|
||||
#### Non-integer values
|
||||
|
||||
The two non-integer year names (`Feb 1974` and `Oct 1974`) are displayed as `NaN`. We can fix these by casting our `year` values to strings:
|
||||
|
||||
|
||||
```
|
||||
` df['year'] = df['year'].astype(str)`
|
||||
```
|
||||
|
||||
#### Specifying sort order
|
||||
|
||||
We then also need to tell Altair how to sort the data. Altair allows us to specify more details about the `column` channel by passing it a `Column` object. So we tell it to sort in the order that the data appears in the DataFrame:
|
||||
|
||||
|
||||
```
|
||||
chart = alt.Chart(df).mark_bar().encode(
|
||||
# ...
|
||||
column=alt.Column('year', sort=list(df['year']), title=None),
|
||||
# ...
|
||||
)
|
||||
```
|
||||
|
||||
#### Removing axis titles
|
||||
|
||||
We have removed the "year" label from the top of the plot by setting `title=None`. Let's also remove the "party" labels from each column:
|
||||
|
||||
|
||||
```
|
||||
chart = alt.Chart(df).mark_bar().encode(
|
||||
x=alt.X('party', title=None),
|
||||
# ...
|
||||
)
|
||||
```
|
||||
|
||||
#### Specifying a colormap
|
||||
|
||||
Finally, we want to specify our own colors to use for the bars. Altair lets us specify a mapping between values in a `domain` and colors in a `range`, which is exactly what we need:
|
||||
|
||||
|
||||
```
|
||||
cmap = {
|
||||
'Conservative': '#0343df',
|
||||
'Labour': '#e50000',
|
||||
'Liberal': '#ffff14',
|
||||
'Others': '#929591',
|
||||
}
|
||||
|
||||
chart = alt.Chart(df).mark_bar().encode(
|
||||
# ...
|
||||
color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values())))
|
||||
)
|
||||
```
|
||||
|
||||
#### Final code with style tweaks
|
||||
|
||||
After applying these styling tweaks, our code is a little less pleasing to the eye, but it still uses the declarative approach that makes Altair so scalable. We're still assigning independent variables from our data to separate aspects of our plot, rather than performing complex data manipulations as we often need to do in Matplotlib. The only difference is that our variable names are now wrapped in objects such as `alt.X()` that let us tweak how they appear:
|
||||
|
||||
|
||||
```
|
||||
import altair as alt
|
||||
from votes import long as df
|
||||
|
||||
cmap = {
|
||||
'Conservative': '#0343df',
|
||||
'Labour': '#e50000',
|
||||
'Liberal': '#ffff14',
|
||||
'Others': '#929591',
|
||||
}
|
||||
|
||||
df['year'] = df['year'].astype(str)
|
||||
|
||||
# We're still assigning, e.g. 'party' to x, but now we've wrapped it
|
||||
# in alt.X in order to specify its styling
|
||||
chart = alt.Chart(df).mark_bar().encode(
|
||||
x=alt.X('party', title=None),
|
||||
y='seats',
|
||||
column=alt.Column('year', sort=list(df['year']), title=None),
|
||||
color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values())))
|
||||
)
|
||||
|
||||
chart.save('altair-elections.html')
|
||||
```
|
||||
|
||||
In fairness to Matplotlib, we've now reached the same number of lines of code (16) as we used there!
|
||||
|
||||
Here's the Altair plot with our styling tweaks applied:
|
||||
|
||||
![The Altair plot with our custom styling][12]
|
||||
|
||||
### Conclusion** **
|
||||
|
||||
While the amount of code it takes to plot using Altair is similar to other libraries, its declarative plotting language adds a layer of sophistication I have grown to appreciate. Altair also offers a cleanly separate way to tune and tweak the style, which keeps that syntax out of the code blocks meant for plotting. Altair is another great library when considering a plotting solution for Python.
|
||||
|
||||
\---
|
||||
|
||||
_This article was first shared [here][13] and is edited and republished with permission._
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/6/altair-python
|
||||
|
||||
作者:[Shaun Taylor-Morgan][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/shaun-taylor-morgan
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_data_dashboard_system_computer_analytics.png?itok=oxAeIEI- (metrics and data shown on a computer screen)
|
||||
[2]: https://opensource.com/article/20/4/plot-data-python
|
||||
[3]: https://vega.github.io/vega/
|
||||
[4]: https://opensource.com/article/20/4/install-python-linux
|
||||
[5]: https://opensource.com/article/19/5/python-3-default-mac
|
||||
[6]: https://opensource.com/article/19/8/how-install-python-windows
|
||||
[7]: https://opensource.com/article/20/5/matplotlib-python
|
||||
[8]: https://opensource.com/sites/default/files/uploads/matplotlib_1_1.png (Matplotlib UK election results)
|
||||
[9]: https://anvil.works/blog/plotting-in-seaborn
|
||||
[10]: https://anvil.works/blog/tidy-data
|
||||
[11]: https://opensource.com/sites/default/files/uploads/altair-first-try.png (Altair plot with default styling)
|
||||
[12]: https://opensource.com/sites/default/files/uploads/altair_3.png (The Altair plot with our custom styling.)
|
||||
[13]: https://anvil.works/blog/plotting-in-altair
|
106
sources/tech/20200610 How to write functions in Bash.md
Normal file
106
sources/tech/20200610 How to write functions in Bash.md
Normal file
@ -0,0 +1,106 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to write functions in Bash)
|
||||
[#]: via: (https://opensource.com/article/20/6/bash-functions)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
How to write functions in Bash
|
||||
======
|
||||
Reduce redundancy and maintenance in your code by writing functions.
|
||||
![woman on laptop sitting at the window][1]
|
||||
|
||||
When you're programming, you're literally defining a procedure, or a _routine_, you want the computer to perform. A simple analogy compares computer programming to baking bread: you list ingredients once to set up the work environment, then you list the steps you must take to end up with a loaf of bread. In both programming and baking, some steps must be repeated at different intervals. In baking bread, for instance, this could be the process of feeding a sourdough culture:
|
||||
|
||||
|
||||
```
|
||||
STIR=100
|
||||
SNOOZE=86400
|
||||
|
||||
function feed_culture {
|
||||
remove_from(pantry)
|
||||
add(flour, water)
|
||||
stir($STIR)
|
||||
sleep($SNOOZE)
|
||||
}
|
||||
```
|
||||
|
||||
And later, kneading and proofing the dough:
|
||||
|
||||
|
||||
```
|
||||
KNEAD=600
|
||||
SNOOZE=7200
|
||||
|
||||
function process_dough {
|
||||
remove_from(proofing_drawer)
|
||||
knead($KNEAD)
|
||||
return_to_drawer($SNOOZE)
|
||||
}
|
||||
```
|
||||
|
||||
In programming, these subroutines can be expressed as _functions_. Functions are important for programmers because they help reduce redundancy in code, which in turn reduces the amount of maintenance required. For example, in the imaginary scenario of baking bread programmatically, if you need to change the amount of time the dough proofs, as long as you've used a function before, you merely have to change the value of the seconds once, either by using a variable (called **SNOOZE** in the sample code) or directly in the subroutine that processes dough. That can save you a lot of time, because you don't have to hunt through your codebase for every possible mention of rising dough, much less worry about missing one. Many a bug's been caused by a missed value that didn't get changed or by a poorly executed **`sed`** command in hopes of catching every last match without having to hunt for them manually.
|
||||
|
||||
In [Bash][2], defining a function is as easy as setting it either in the script file you're writing or in a separate file. If you save functions to a dedicated file, you can `source` it into your script as you would `include` a library in C or C++ or `import` a module into Python. To create a Bash function, use the keyword `function`:
|
||||
|
||||
|
||||
```
|
||||
function foo {
|
||||
# code here
|
||||
}
|
||||
```
|
||||
|
||||
Here's a simple (and somewhat contrived, as this could be made simpler) example of how a function works with arguments:
|
||||
|
||||
|
||||
```
|
||||
#!/usr/bin/env bash
|
||||
ARG=$1
|
||||
|
||||
function mimic {
|
||||
if [[ -z $ARG ]]; then
|
||||
ARG='world'
|
||||
fi
|
||||
echo "hello $ARG"
|
||||
}
|
||||
|
||||
mimic $ARG
|
||||
```
|
||||
|
||||
Here are the results:
|
||||
|
||||
|
||||
```
|
||||
$ ./mimic
|
||||
hello world
|
||||
$ ./mimic everybody
|
||||
hello everybody
|
||||
```
|
||||
|
||||
Note the final line of the script, which executes the function. This is a common point of confusion for beginning scripters and programmers: functions don't get executed automatically. They exist as _potential_ routines until they are called.
|
||||
|
||||
Without a line calling the function, the function would only be defined and would never run.
|
||||
|
||||
If you're new to Bash, try executing the sample script once with the last line included and again with the last line commented out.
|
||||
|
||||
### Using functions
|
||||
|
||||
Functions are vital programming concepts, even for simple scripts. The more comfortable you become with functions, the better off you'll be when you're faced with a complex problem that needs something more dynamic than just declarative lines of commands. Keeping general-purpose functions in separate files can also save you some work, as it'll help you build up routines you commonly use so that you can reuse them across projects. Look at your scripting habits and see where functions might fit.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/6/bash-functions
|
||||
|
||||
作者:[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/lenovo-thinkpad-laptop-window-focus.png?itok=g0xPm2kD (young woman working on a laptop)
|
||||
[2]: https://opensource.com/resources/what-bash
|
@ -0,0 +1,197 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Nextcloud Vs ownCloud: What’s the Difference? Which one Should You Use?)
|
||||
[#]: via: (https://itsfoss.com/nextcloud-vs-owncloud/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Nextcloud Vs ownCloud: What’s the Difference? Which one Should You Use?
|
||||
======
|
||||
|
||||
[Nextcloud][1] and [ownCloud][2] are two of the most popular names that you will come across when we talk about self-hosted open-source cloud storage services.
|
||||
|
||||
Now, Nextcloud and ownCloud are similar in so many ways that it often confuses people.
|
||||
|
||||
And this is why we at It’s FOSS thought of creating this comparison of Nextcloud and ownCloud. I’ll discuss the difference between ownCloud and Nextcloud. I’ll also share how both services are similar.
|
||||
|
||||
### The history of ownCloud and Nextcloud
|
||||
|
||||
In 2010, [Frank Karlitschek][3] started the ownCloud project by announcing it during a [Camp KDE keynote session][4].
|
||||
|
||||
![ownCloud interface][5]
|
||||
|
||||
It started off as a personal cloud storage solution to give users the ability to have control of their own data without relying on other cloud storage providers which then translated to the start of ownCloud Inc.
|
||||
|
||||
Unfortunately, Frank Karlitschek, along with several original developers left ownCloud Inc. They didn’t officially state any reason for that – but they hinted about the problem of having a business model that did not compliment an open-source solution.
|
||||
|
||||
Now, ownCloud focuses primarily on Enterprise offerings and offers a separate sever edition (to self-host) for users.
|
||||
|
||||
Frank Karlitschek started Nextcloud as a fork of ownCloud right after leaving ownCloud Inc.
|
||||
|
||||
![Nextcloud interface][6]
|
||||
|
||||
Considering that it’s a fork, you will find many similarities, however, the product has evolved a lot over the years arguably making it more popular than ownCloud. It is striving to become a collaboration platform like Microsoft Office 365 and Google Docs.
|
||||
|
||||
Similar to ownCloud, you will find a self-hosted option and an enterprise-tailored solution.
|
||||
|
||||
### Nextcloud vs ownCloud: Similarities
|
||||
|
||||
![Nextcloud Vs Owncloud][7]
|
||||
|
||||
Let’s talk about the similarities between Nextcloud and ownCloud.
|
||||
|
||||
#### User Interface
|
||||
|
||||
It’s safe to consider that the user interface offered by Nextcloud and ownCloud is very similar to each other.
|
||||
|
||||
Yes, you might find some under-the-hood changes and maybe several subtle differences. But, overall, it looks/feels very much the same.
|
||||
|
||||
#### Collaboration Features
|
||||
|
||||
Unless you consider all the nitty gritty features that they both offer, fundamentally, it’s more or less the same.
|
||||
|
||||
You can manage tasks, upload files, have a calendar, and do a lot of basic collaboration activities in both Nextcloud and ownCloud.
|
||||
|
||||
#### Self-hosting Option
|
||||
|
||||
It’s quite obvious — but just for your information, you can easily deploy either of them (Nextcloud and ownCloud) on your own server without opting for enterprise services.
|
||||
|
||||
Use a cloud service like Linode or [DigitalOcean][8]. They even have one-click installer option to deploy a full-fledged Nextcloud or ownCloud server in minutes.
|
||||
|
||||
#### Cross-platform support
|
||||
|
||||
Both ownCloud and Nextcloud offers support for desktop clients and mobile apps (iOS & Android) to enhance the convenience of collaboration activities.
|
||||
|
||||
So, you should be good to go with either of them if you’re looking for cross-platform support for yourself.
|
||||
|
||||
### Nextcloud vs ownCloud: Key Differences
|
||||
|
||||
Now that you are aware of the similarities, let’s see how Nextcloud and ownCloud are different.
|
||||
|
||||
#### License Differences
|
||||
|
||||
For most of the users, being a truly open-source solution matters a lot. And, that is why it is important to know the license a service comes under.
|
||||
|
||||
ownCloud offers the standard edition (or the community edition) under the [AGPLv3 license][9] but the enterprise edition comes under [ownCloud’s commercial license][10].
|
||||
|
||||
While Nextcloud’s both enterprise and community editions come under the **APGPLv3 license.**
|
||||
|
||||
So, depending on what you’re looking for, you need to make a choice here.
|
||||
|
||||
#### Exclusive Features
|
||||
|
||||
Sometimes it’s a deal breaker or a selling point to have a set of enterprise-exclusive features on a service.
|
||||
|
||||
So, when I looked around, I found out that ownCloud does offer a set of [exclusive features][11] only for the premium subscribers.
|
||||
|
||||
On the other hand, Nextcloud offers the complete set of features for both community and enterprise editions and the premium subscription only includes support or technical help for enterprise deployments.
|
||||
|
||||
#### Documentation
|
||||
|
||||
![Owncloud Documentation][12]
|
||||
|
||||
Documentation is a very important part of a product/service like ownCloud and Nextcloud where a lot of users manage the instances themselves.
|
||||
|
||||
Of course, depending on your technical expertise and preferences, you might find any of the documentations to be better than the other.
|
||||
|
||||
![Nextcloud Documentation][13]
|
||||
|
||||
However, in our case, [Avimanyu Bandyopadhyay][14] (Research Engineer at It’s FOSS) felt that [ownCloud’s documentation][15] is more useful and easier to follow when compared to [Nextcloud’s documentation][16].
|
||||
|
||||
_ownCloud has provided a ready-to-deploy configuration file for enterprise use at the bottom of its docker documentation page. But, Nextcloud has kept it separately on GitHub – which might be a little inconvenient_ _to find_.
|
||||
|
||||
So, Nexcloud’s clarity on the documentation part could definitely improve.
|
||||
|
||||
#### Pricing Plans (for enterprise edition)
|
||||
|
||||
No matter how a good a service is — the pricing plans always influences the final decision for enterprises to choose a solution that suits their requirements within a budget.
|
||||
|
||||
If we compare the pricing plans of [Nextcloud][17] and [ownCloud][18], you will notice that ownCloud starts offering enterprise services at **$3,600 for a team of 50 users**.
|
||||
|
||||
In contrast, Nextcloud’s enterprise services **start at €1900 (which is roughly $2050)** for a team of 50 users.
|
||||
|
||||
Of course, it all comes down to your preferences on what exactly are you looking for.
|
||||
|
||||
#### App Marketplace
|
||||
|
||||
![Nextcloud Marketplace][19]
|
||||
|
||||
The availability of apps to extend the functionality of Nextcloud or ownCloud plays an important role to help you choose the best for your use-case.T
|
||||
|
||||
Theoretically, you should find a bunch of useful [apps on Nextcloud][20] and [ownCloud’s marketplace][21].
|
||||
|
||||
However, you might find a few things missing on ownCloud’s app marketplace like Kanban styled board [Deck][22] and [W2G2][23] (File/Folder locking app).
|
||||
|
||||
![Owncloud Marketplace][24]
|
||||
|
||||
At least, depending on what I look for on a collaboration platform — I couldn’t find anything similar on ownCloud.
|
||||
|
||||
Similarly, I might have missed something that’s available on ownCloud but not on Nextcloud. So, this should be one of your primary factors to consider before deploying ownCloud or Nextcloud for yourself or for your enterprise.
|
||||
|
||||
#### Potential Issues or Bugs
|
||||
|
||||
It’s obvious that both Nextcloud and ownCloud can have their own share of issues. So, if you’re going to self-host either of them, you should check out their GitHub pages to scroll through the active issues.
|
||||
|
||||
* [Nextcloud GitHub][25]
|
||||
* [ownCloud GitHub][26]
|
||||
|
||||
|
||||
|
||||
For instance, while writing this article, Nextcloud has an active issue where the [files in a sub-folder of an encrypted folder are not encrypted][27]. Similarly, ownCloud also has a bug with [syncing the files when the user hits the reload button][28].
|
||||
|
||||
Of course, these are just examples that I took from their list of issues. But, you should keep an eye on some active issues before deploying it yourself that could ultimately help you decide what to choose.
|
||||
|
||||
### So, which one do you choose? Nextcloud or ownCloud?
|
||||
|
||||
Now that you’ve known about what’s different and what’s similar between Nextcloud and ownCloud — it should be slightly easier to choose one.
|
||||
|
||||
However, given the potential of both the services and the number of add-ons they offer, I could have missed a few points here. So, I’d recommend you to go through the documentations for each of them for enterprise-use. For personal usage, you can choose either Nextcloud or ownCloud as per your preferences.
|
||||
|
||||
At It’s FOSS, we [use Nextcloud][29] for storing files, task management and recently for collaborating on documentation.
|
||||
|
||||
What do you think? Nextcloud or ownCloud? Do share your thoughts in the comment section.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/nextcloud-vs-owncloud/
|
||||
|
||||
作者:[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://nextcloud.com/
|
||||
[2]: https://owncloud.com/
|
||||
[3]: https://en.wikipedia.org/wiki/Frank_Karlitschek
|
||||
[4]: https://dot.kde.org/2010/01/21/camp-kde-2010-continues-more-talks
|
||||
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/ownCloud-screenshot.jpg?ssl=1
|
||||
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/nextcloud-screenshot.jpg?ssl=1
|
||||
[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Nextcloud-vs-OwnCloud-itsfoss.jpg?ssl=1
|
||||
[8]: https://itsfoss.com/recommends/digital-ocean/
|
||||
[9]: https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||
[10]: https://owncloud.com/licenses/owncloud-commercial/
|
||||
[11]: https://owncloud.com/enterprise-edition/
|
||||
[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/owncloud-documentation.jpg?ssl=1
|
||||
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/nextcloud-documentation.jpg?ssl=1
|
||||
[14]: https://itsfoss.com/author/avimanyu/
|
||||
[15]: https://doc.owncloud.org/server/10.4/
|
||||
[16]: https://docs.nextcloud.com/
|
||||
[17]: https://nextcloud.com/pricing/
|
||||
[18]: https://owncloud.com/pricing/
|
||||
[19]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/nextcloud-marketplace.jpg?ssl=1
|
||||
[20]: https://apps.nextcloud.com/
|
||||
[21]: https://marketplace.owncloud.com
|
||||
[22]: https://apps.nextcloud.com/apps/deck
|
||||
[23]: https://apps.nextcloud.com/apps/w2g2
|
||||
[24]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/owncloud-marketplace.jpg?ssl=1
|
||||
[25]: https://github.com/nextcloud
|
||||
[26]: https://github.com/owncloud
|
||||
[27]: https://github.com/nextcloud/desktop/issues/774
|
||||
[28]: https://github.com/owncloud/core/issues/37170
|
||||
[29]: https://itsfoss.com/nextcloud/
|
@ -0,0 +1,99 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Devuan Beowulf 3.0 is the Latest Stable Release Based on Debian 10.4 Buster (and Free From systemd))
|
||||
[#]: via: (https://itsfoss.com/devuan-3-release/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Devuan Beowulf 3.0 是基于 Debian 10.4 Buster 的最新稳定版本(且没有 systemd)
|
||||
======
|
||||
|
||||
[Devuan GNU+Linux][1] 是 [Debian][2] 的分支,它没有 [systemd][3]。如果你想知道 systemd 有什么问题,那将另一个讨论。
|
||||
|
||||
但是,如果你是想要无 systemd Linux 发行版的人,那么 Devuan Beowulf 3.0 的发布对你来说应该是个好消息。
|
||||
|
||||
### Devuan Beowulf 3.0:新增功能?
|
||||
|
||||
![][4]
|
||||
|
||||
Devuan 通常因提供替代的 [init][5] 软件(如 [SysV][6])而受到喜爱。
|
||||
|
||||
在本文中,我们将介绍 Devuan Beowulf 3.0 中的主要亮点。
|
||||
|
||||
#### 基于 Debian 10.4 Buster
|
||||
|
||||
[Debian 10 Buster][7] 无疑是令人印象深刻的发行系列,最新版本是 Debian 10.4。
|
||||
|
||||
在 Devuan Beowulf 3.0 中,你会很高兴地知道该版本基于最新的 Debian 10.4 Buster 更新。
|
||||
|
||||
如果你不了解它,可以查看 [Debian 10.4 Buster 的官方公告][8],以了解更多信息。
|
||||
|
||||
#### Linux Kernel 4.19
|
||||
|
||||
在最新版本中装有 [Linux Kernel 4.19 LTS][9] 也是一个很好的补充。
|
||||
|
||||
当然,这不是最新的,因为我们身处 “Debian 领域”,这里的事物并非总是最新的,而是更加稳定。新内核应该可以解决以前版本中可能遇到的几个问题。
|
||||
|
||||
#### 支持 ppc64el 架构
|
||||
|
||||
对 [ppc64el][10] 的支持在大多数时候都不是大问题,但支持 PowerPC 和 Power ISA 处理器是一个优势。
|
||||
|
||||
别忘了,Devuan GNU+Linux 已经支持 i386、amd64、armel、armhf 和 arm64 架构。
|
||||
|
||||
#### 添加 runit 和 OpenRC 作为可选项
|
||||
|
||||
为考虑更多 init 替代方案,[runit][11] 和 [openrc][12] 现在是最新版本中的一个选项。
|
||||
|
||||
#### 其他更改
|
||||
|
||||
除了上面关键亮点外,你还可以发现添加了独立守护进程 [eudev][13] 和 [elogind][14]。
|
||||
|
||||
启动页面、显示管理器和桌面主题还包括了细微的变化。例如,启动菜单显示 “**Debian**” 而不是 “**Devuan**”。
|
||||
|
||||
如果你想了解有关 Devuan Beowulf 3.0.0 变更的更多技术详细信息,那么可能需要查看[官方发行说明][15]。
|
||||
|
||||
花絮
|
||||
|
||||
Devuan 的发布以小行星命名。Beowulf 是一个[编号为 38086 的小行星][16]。
|
||||
|
||||
### 总结
|
||||
|
||||
Devuan Beowulf 3.0 的最新稳定版本被认为是提供无 systemd 发行版的良好进展。
|
||||
|
||||
如果你想支持 Devuan 项目,请[在财务上为他们的项目捐款][17]或[通过其他方式][18]。
|
||||
|
||||
你觉得这个版本怎么样?请在下面评论让我知道你的想法!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/devuan-3-release/
|
||||
|
||||
作者:[Ankush Das][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/ankush/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://devuan.org
|
||||
[2]: https://www.debian.org
|
||||
[3]: https://en.wikipedia.org/wiki/Systemd
|
||||
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/devuan-beowulf.jpg?ssl=1
|
||||
[5]: https://en.wikipedia.org/wiki/Init
|
||||
[6]: https://wiki.archlinux.org/index.php/SysVinit
|
||||
[7]: https://itsfoss.com/debian-10-buster/
|
||||
[8]: https://www.debian.org/News/2020/20200509
|
||||
[9]: https://itsfoss.com/linux-kernel-4-19-lts-release/
|
||||
[10]: https://en.wikipedia.org/wiki/Ppc64
|
||||
[11]: https://en.wikipedia.org/wiki/Runit
|
||||
[12]: https://en.wikipedia.org/wiki/OpenRC
|
||||
[13]: https://wiki.gentoo.org/wiki/Eudev
|
||||
[14]: https://wiki.gentoo.org/wiki/Elogind
|
||||
[15]: https://files.devuan.org/devuan_beowulf/Release_notes.txt
|
||||
[16]: https://en.wikipedia.org/wiki/Meanings_of_minor_planet_names:_38001%E2%80%9339000#086
|
||||
[17]: https://devuan.org/os/donate
|
||||
[18]: https://dev1galaxy.org/viewtopic.php?pid=1380#p1380
|
Loading…
Reference in New Issue
Block a user