mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-03-09 01:30:10 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
27dcef7047
@ -0,0 +1,87 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12011-1.html)
|
||||
[#]: subject: (10 Linux command tutorials for beginners and experts)
|
||||
[#]: via: (https://opensource.com/article/19/12/linux-commands)
|
||||
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
|
||||
|
||||
10 篇对初学者和专家都有用的 Linux 命令教程
|
||||
======
|
||||
|
||||
> 在这有关 Linux 命令的十大文章中,了解如何使 Linux 发挥所需的作用。
|
||||
|
||||

|
||||
|
||||
**很好地**使用 Linux 意味着了解有哪些命令以及它们可以为你执行的功能。
|
||||
|
||||
### 《在 Linux 命令行下使用“原力”》
|
||||
|
||||
<ruby>原力<rt>force</rt></ruby>有光明的一面和黑暗的一面。正确理解这个对于真正掌握它至关重要。Alan Formy-Duval 在他的文章《[在 Linux 命令行下使用“原力”][2]》中,解释了一些流行的、有时是危险的命令的 `-f` 选项(也称为 `--force`)。
|
||||
|
||||
### 《Linux useradd 命令介绍》
|
||||
|
||||
共享帐户是一个坏主意。相反,请使用典型的 `useradd` 命令为不同的人(甚至是不同的角色)分配单独的帐户。作为其经典的 Linux 管理基础系列的一部分,Alan Formy-Duval 提供了《[Linux useradd 命令介绍][3]》,并且像往常一样,他用**朴实明白的语言**对其进行了解释,以便新老管理员都可以理解。
|
||||
|
||||
### 《用 Linux 命令显示硬件信息》
|
||||
|
||||
机器**里面**是什么?有时不使用螺丝刀检查硬件很有用。无论是你正在使用的计算机,还是在商店购买前进行测试的计算机、或者是正在尝试维修的计算机,在《[用 Linux 命令显示硬件信息][4]》中,Howard Fosdick 提供了或流行或晦涩难懂的命令,以帮助你深入了解计算机的硬件信息。
|
||||
|
||||
### 《如何在 Linux 上使用 gocryptfs 加密文件》
|
||||
|
||||
从社会保险号到个人信件再到亲人,我们的文件中包含了许多私人数据。在《[如何在 Linux 上使用 gocryptfs 加密文件][5]》中,Brian "Bex" Exelbierd 解释了如何保持**隐私*的私密性。此外,他展示了一种加密文件的方式,这种方式对你现有的工作流程几乎没有影响。这不是复杂的 PGP 风格的密钥管理和后台密钥代理的难题,这是快速、无缝和安全的文件加密。
|
||||
|
||||
### 《如何使用 rsync 的高级用法进行大型备份》
|
||||
|
||||
在新的一年中,许多人会下定决心要更加努力地进行备份。Alan Formy-Duval 早在几年前就已经做出了解决方案,因为在《[如何使用 rsync 的高级用法进行大型备份][6]》中,他表现出对文件同步命令的极其熟悉。你可能不会马上记住所有语法,但其思路是读取和处理选项、构造备份命令,然后使其自动化。这是使用 `rsync` 的明智方法,也是可靠地执行备份的**唯一**方法。
|
||||
|
||||
### 《在 Linux 命令行使用 more 查看文本文件》
|
||||
|
||||
在 Scott Nesbitt 的文章《[在 Linux 命令行使用 more 查看文本文件][7]》中,古老而良好的默认分页器 `more` 引起了人们的关注。许多人安装和使用 `less`,因为它比 `more` 更灵活。但是,随着越来越多的系统在新出现的容器中实现,有时甚至不存在像 `less` 或 `most` 之类的新颖的豪华工具。了解和使用`more` 很简单,这是常见的默认设置,并且是生产系统最后的调试工具。
|
||||
|
||||
### 《关于 sudo 你可能不知道的》
|
||||
|
||||
`sudo` 命令因其过失而闻名。人们知道 `sudo` 一词,我们大多数人认为我们知道它的作用。我们的观点是正确的,但是正如 Peter Czanik 在他的文章《[关于 sudo 你可能不知道的][8]》中所揭示的那样,该命令所包含的不仅仅是“<ruby>西蒙说的<rt>Simon says</rt></ruby>”(LCTT 译注:国外的一个儿童游戏)。就像这个经典的童年游戏一样,`sudo` 命令功能强大,也容易犯愚蠢的错误 —— 有更多的可能产生可怕都后果,而这是你绝不想遇上的事情!
|
||||
|
||||
### 《怎样用 Bash 编程:语法和工具》
|
||||
|
||||
如果你是 Linux、BSD 或 Mac(以及近来的 Windows)用户,你也许使用过交互式 Bash shell。它是快速的、一次性命令的绝佳 shell,这就是为什么这么多 Linux 用户喜欢将其用作主要用户界面的原因。但是,Bash 不仅仅是个命令提示符。它也是一种编程语言,如果你已经在使用 Bash 命令,那么自动化的道路从未如此简单过。在 David Both 的出色作品《[怎样用 Bash 编程:语法和工具][9]》中对其进行全面了解。
|
||||
|
||||
### 《精通 Linux 的 ls 命令》
|
||||
|
||||
`ls` 命令是那些两个字母的命令之一。单字母命令是针对慢速终端的优化,因为慢速终端的输入的每个字母都会导致明显的延迟,而这对于懒惰的打字员来说也是不错的奖励。一如既往地,Seth Kenlon 清晰实用地解释了你可以怎样《[精通 Linux 的 ls 命令][10]》。最重要的是,在“一切都是文件”的系统中,列出文件至关重要。
|
||||
|
||||
### 《Linux cat 命令入门》
|
||||
|
||||
`cat` 命令(con*cat*enate 的缩写)看似简单。无论是使用它来快速查看文件的内容还是将内容通过管道传输到另一个命令,你都可能没有充分利用 `cat` 的功能。Alan Formy-Duval 的《[Linux cat 命令入门][11]》提供了一些新思路,可以使你没有打开文件的感觉就可以看到文件内容。另外,了解各种有关 `zcat` 的知识,这样你就可以无需解压缩就可以得到压缩文件的内容!这是一件小而简单的事情,但是**这**是使 Linux 很棒的原因。
|
||||
|
||||
### 继续旅程
|
||||
|
||||
不要让这些关于 Linux 命令的 10 篇最佳文章成为你的旅程终点。关于 Linux 及其多才多艺的提示符,还有更多值得去发现,因此,请继续关注以获取更多知识。而且,如果你想让我们介绍一个 Linux 命令,请在评论中告诉我们。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/12/linux-commands
|
||||
|
||||
作者:[Moshe Zadka][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/moshez
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background)
|
||||
[2]: https://linux.cn/article-10881-1.html
|
||||
[3]: https://linux.cn/article-11756-1.html
|
||||
[4]: https://linux.cn/article-11422-1.html
|
||||
[5]: https://opensource.com/article/19/8/how-encrypt-files-gocryptfs
|
||||
[6]: https://linux.cn/article-10865-1.html
|
||||
[7]: https://linux.cn/article-10531-1.html
|
||||
[8]: https://linux.cn/article-11595-1.html
|
||||
[9]: https://linux.cn/article-11552-1.html
|
||||
[10]: https://linux.cn/article-11159-1.html
|
||||
[11]: https://opensource.com/article/19/2/getting-started-cat-command
|
||||
[12]: https://opensource.com/how-submit-article
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -0,0 +1,94 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Fedora 32 Release Date, New Features and Everything Else)
|
||||
[#]: via: (https://itsfoss.com/fedora-32/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Fedora 32 Release Date, New Features and Everything Else
|
||||
======
|
||||
|
||||
Fedora 32 should be releasing at the end of April, around the same time as the [Ubuntu 20.04 LTS release][1].
|
||||
|
||||
Since we are covering the Ubuntu 20.04 release in detail, we thought of doing the same for our Fedora fans here.
|
||||
|
||||
In this article, I am going to highlight the new features coming to Fedora 32. I’ll update this article as the development progresses further.
|
||||
|
||||
### New features in Fedora 32
|
||||
|
||||
![][2]
|
||||
|
||||
#### EarlyOOM Enabled
|
||||
|
||||
With this release, [EarlyOOM][3] comes enabled by default. To give you a background, EarlyOOM lets users to easily recover their systems from a low-memory situation with heavy [swap][4] usage.
|
||||
|
||||
It is worth noting that it is applicable to the Fedora 32 Beta Workstation edition.
|
||||
|
||||
#### GNOME 3.36 Added
|
||||
|
||||
The new Fedora 32 Workstation also comes included with the new [GNOME 3.36][5].
|
||||
|
||||
Not just limited to Fedora 32 Beta Workstation – but it has also been added to the daily build of [Ubuntu 20.04 LTS][1].
|
||||
|
||||
Of course, the improvements in GNOME 3.36 translates to Fedora’s latest release as well – providing a faster and better experience, overall.
|
||||
|
||||
So, you’ll get the new lock screen, the do not disturb feature and everything else that comes with GNOME 3.36.
|
||||
|
||||
#### Package Updates
|
||||
|
||||
Fedora 32 release also updates a lot of important packages that include Ruby, Perl, and Python. It also features the latest version 10 of the [GNU Compiler Collection][6] (GCC).
|
||||
|
||||
#### Other Changes
|
||||
|
||||
In addition to the key highlights, there’s a lot of things that have changed, improved, or fixed. You can take a detailed look at its [changelog][7] to know more about what has changed.
|
||||
|
||||
### Download Fedora 32 (development version)
|
||||
|
||||
Fedora 32 is still under development. The beta version has been released and you may test it on a spare system or in virtual machine. **I would not advise you to use it on your main system before the final release**. There’s an official [list of know bugs][8] for the current release, you can refer to that as well.
|
||||
|
||||
In the [official announcement][9], they mentioned the availability of both **Fedora 32 beta workstation** and the **server** along with other popular variants.
|
||||
|
||||
To get the Workstation and the Server edition, you have to visit the official download page for [Fedora Workstation][10] and [Fedora Server][11] (depending on what you want).
|
||||
|
||||
![Fedora Download Beta][12]
|
||||
|
||||
Once, you do that, just look for a release tagged as “**Beta!**” as shown in the image above and start downloading it. For other variants, click on the links below to head to their respective download pages:
|
||||
|
||||
* [Fedora 32 Beta Spins][13]
|
||||
* [Fedora 32 Beta Labs][14]
|
||||
* [Fedora 32 Beta ARM][15]
|
||||
|
||||
|
||||
|
||||
Have you noticed any other new feature in Fedora 32? What features you would like to see here? Feel free to leave a comment below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/fedora-32/
|
||||
|
||||
作者:[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/ubuntu-20-04-release-features/
|
||||
[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/11/update_fedora.jpg?ssl=1
|
||||
[3]: https://fedoraproject.org/wiki/Changes/EnableEarlyoom#Enable_EarlyOOM
|
||||
[4]: https://itsfoss.com/swap-size/
|
||||
[5]: https://itsfoss.com/gnome-3-36-release/
|
||||
[6]: https://gcc.gnu.org/
|
||||
[7]: https://fedoraproject.org/wiki/Releases/32/ChangeSet
|
||||
[8]: https://fedoraproject.org/wiki/Common_F32_bugs
|
||||
[9]: https://fedoramagazine.org/announcing-the-release-of-fedora-32-beta/
|
||||
[10]: https://getfedora.org/workstation/download/
|
||||
[11]: https://getfedora.org/server/download/
|
||||
[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/fedora-download-beta.jpg?ssl=1
|
||||
[13]: https://spins.fedoraproject.org/prerelease
|
||||
[14]: https://labs.fedoraproject.org/prerelease
|
||||
[15]: https://arm.fedoraproject.org/prerelease
|
@ -0,0 +1,78 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (With npm Acquisition, Microsoft is Set to Own the Largest Software Registry in the World)
|
||||
[#]: via: (https://itsfoss.com/microsoft-npm-acquisition/)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
With npm Acquisition, Microsoft is Set to Own the Largest Software Registry in the World
|
||||
======
|
||||
|
||||
Microsoft has been betting big on open source for past few years. Apart from open sourcing a few things here and there, Microsoft is contributing a lot to Linux kernel (for its Azure cloud platform).
|
||||
|
||||
To further strengthen its position in the open source world, [Microsoft acquired the popular open source code hosting platform GitHub for $7.5 billion][1].
|
||||
|
||||
Now Microsoft owned GitHub [has acquired][2] [npm][3] ( short for Node Package Manager). npm is the [world’s largest software registry][4] with [more than 1.3 million packages that have 75 billion downloads a month][5].
|
||||
|
||||
![][6]
|
||||
|
||||
If you are not familiar, npm is a package manager for JavaScript programming language, primarily the hugely popular open source [Node.js][7].
|
||||
|
||||
Though npm has scope of private repository for enterprises, most of the 1.3 million packages are open source and/or used in various open source projects.
|
||||
|
||||
Both node.js and npm are used by big software and IT companies like IBM, Yahoo and big corporations like Netflix and PayPal.
|
||||
|
||||
In case you are wondering, the acquisition amount has not been disclosed by either party.
|
||||
|
||||
### Microsoft’s proposed plan for npm
|
||||
|
||||
![][8]
|
||||
|
||||
GitHub CEO Nat Friedman assured that Microsoft intends to keep the npm registry available as open-source and free to developers.
|
||||
|
||||
Once the acquisition is complete, Microsoft is going to invest in the registry infrastructure and platform. It plans to improve the core experience of npm by adding new features like Workspaces, as well as bringing improvements to publishing and multi-factor authentication.
|
||||
|
||||
Microsoft also intends to integrate GitHub and npm so that developers could trace a change from a GitHub pull request to the npm package version that fixed it.
|
||||
|
||||
### Part of a larger plan
|
||||
|
||||
First, [Microsoft bought GitHub][1], the platform that had the largest open source repositories and now npm, the largest software registry. Clearly, Microsoft is tightening its grip around open source projects. This could allow Microsoft to dictate the policies around these open source projects in future.
|
||||
|
||||
When Microsoft acquired GitHub, several open source developers moved to [alternate platforms like GitLab][9] but GitHub remained the first choice for the developers. Microsoft did introduce some innovative features like security advisories, [package registry][10], [sponsorship][11] etc. Microsoft is expanding GitHub by forming communities around it specially in developing countries. Recently, [GitHub announced its Indian subsidiary][12] to specially attract young developers to its platform.
|
||||
|
||||
So now Microsoft owns the professional social network [LinkedIn][13], developer oriented GitHub and npm. This indicates that Microsoft will continue its shopping spree and will acquire more open source related projects that have substantial developer population.
|
||||
|
||||
What could be next then? WordPress because it is the [most popular open source CMS][14] and [runs 33% of the websites][15] on the internet?
|
||||
|
||||
While we wait and watch for Microsoft’s next move, why not share your views on this development? Comment section is all yours.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/microsoft-npm-acquisition/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://itsfoss.com/microsoft-github/
|
||||
[2]: https://github.blog/2020-03-16-npm-is-joining-github/
|
||||
[3]: https://www.npmjs.com/
|
||||
[4]: https://www.linux.com/news/state-union-npm/
|
||||
[5]: https://www.zdnet.com/article/microsoft-buys-javascript-developer-platform-npm-plans-to-integrate-it-with-github/
|
||||
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/microsoft-github-npm.jpg?ssl=1
|
||||
[7]: https://nodejs.org/en/
|
||||
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/github-npm.jpg?ssl=1
|
||||
[9]: https://itsfoss.com/github-alternatives/
|
||||
[10]: https://github.blog/2019-05-10-introducing-github-package-registry/
|
||||
[11]: https://itsfoss.com/github-sponsors-program/
|
||||
[12]: https://github.blog/2020-02-12-announcing-github-india/
|
||||
[13]: https://www.linkedin.com/
|
||||
[14]: https://itsfoss.com/open-source-cms/
|
||||
[15]: https://wordpress.org/news/2019/03/one-third-of-the-web/
|
@ -0,0 +1,61 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: ('AI everywhere' IoT chips coming from Arm)
|
||||
[#]: via: (https://www.networkworld.com/article/3532094/ai-everywhere-iot-chips-coming-from-arm.html)
|
||||
[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/)
|
||||
|
||||
'AI everywhere' IoT chips coming from Arm
|
||||
======
|
||||
Two new microprocessors from Arm promise to miniaturize artificial intelligence.
|
||||
Healthcare
|
||||
|
||||
Silicon microchip maker Arm is working on a new semiconductor design that it says will enable machine learning, at scale, on small sensor devices. Arm has completed testing of the technology and expects to bring it to market next year.
|
||||
|
||||
Artificial intelligence, implemented locally on "billions and ultimately trillions" of devices is coming, the company says in a [press release][1]. Arm Holdings, owned by Japanese conglomerate Softbank, says its partners have shipped more than 160 billion Arm-based chips to date, and that 45 million of its microprocessor designs are being placed within electronics every day.
|
||||
|
||||
The new machine-learning silicon will include micro neural processing units (microNPU) that can be used to identify speech patterns and perform other AI tasks. Importantly, the processing is accomplished on-device and in smaller form factors than have so far been available. The chips don't need the cloud or any network.
|
||||
|
||||
[RELATED: Auto parts supplier has big plans for its nascent IoT effort][2]
|
||||
|
||||
Arm, which historically has been behind mobile smartphone microchips, is aiming this design – the Cortex M55 processor, paired with the Ethos-U55, Arm's first microNPU – at Internet of Things instead.
|
||||
|
||||
"Enabling AI everywhere requires device makers and developers to deliver machine learning locally on billions, and ultimately trillions of devices," said Dipti Vachani, senior vice president and general manager of Arm's automotive and IoT areas, in a statement. "With these additions to our AI platform, no device is left behind as on-device ML on the tiniest devices will be the new normal, unleashing the potential of AI securely across a vast range of life-changing applications."
|
||||
|
||||
Arm wants to take advantage of the autonomous nature of chip-based number crunching, as opposed to doing it in the cloud. Privacy-conscious (and regulated) healthcare is an example of a vertical that might like the idea of localized processing.
|
||||
|
||||
Functioning AI without cloud dependence isn't entirely new. Intel's [Neural Compute Stick 2][3], a $69 self-contained computer vision and deep learning development kit, doesn't need it, for example.
|
||||
|
||||
**[ [Get certified as an Apple Technical Coordinator with this seven-part online course from PluralSight.][4] ]**
|
||||
|
||||
Arm is also going for power savings with its new AI technology. Not requiring a data network can mean longer battery life for the sensor— only the calculated results need to be sent, rather than every bit. Much of the time, raw sensor data is irrelevant and can be discarded. Arm's new endpoint ML technologies are going to help microcontroller developers "accelerate edge inference in devices limited by size and power," said Geoff Lees, senior vice president of edge processing at IoT semiconductor company [NXP][5], in the announcement.
|
||||
|
||||
Enabling machine learning in power-constrained settings and eliminating the need for network connectivity mean the sensor can be placed where there isn't a hardy power supply. Latency advantages and cost advantages also can come into play.
|
||||
|
||||
"These devices can run neural network models on batteries for years, and deliver low-latency inference directly on the device," said Ian Nappier, product manager of TensorFlow Lite for Microcontrollers at Google, in a statement to Arm. [TensorFlow][6] is an open-source machine learning platform that's been used for detecting respiratory diseases, among other things.
|
||||
|
||||
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/3532094/ai-everywhere-iot-chips-coming-from-arm.html
|
||||
|
||||
作者:[Patrick Nelson][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/Patrick-Nelson/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.arm.com/company/news/2020/02/new-ai-technology-from-arm
|
||||
[2]: https://www.networkworld.com/article/3098084/internet-of-things/auto-parts-supplier-has-big-plans-for-its-nascent-iot-effort.html#tk.nww-fsb
|
||||
[3]: https://store.intelrealsense.com/buy-intel-neural-compute-stick-2.html
|
||||
[4]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fapple-certified-technical-trainer-10-11
|
||||
[5]: https://www.nxp.com/company/our-company/about-nxp:ABOUT-NXP
|
||||
[6]: https://www.tensorflow.org/
|
||||
[7]: https://www.facebook.com/NetworkWorld/
|
||||
[8]: https://www.linkedin.com/company/network-world
|
@ -0,0 +1,117 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Coronavirus challenges remote networking)
|
||||
[#]: via: (https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html)
|
||||
[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/)
|
||||
|
||||
Coronavirus challenges remote networking
|
||||
======
|
||||
COVID-19 sends IBM, Google, Amazon, AT&T, Cisco, Apple and others scrambling to securely support an enormous rise in teleworkers, and puts stress on remote-access networks.
|
||||
Thinkstock
|
||||
|
||||
As the coronavirus spreads, many companies are requiring employees to work from home, putting unanticipated stress on remote networking technologies and causing bandwidth and security concerns.
|
||||
|
||||
Businesses have facilitated brisk growth of teleworkers over the past decades to an estimated 4 million-plus. The meteoric rise in new remote users expected to come online as a result of the novel coronavirus calls for stepped-up capacity.
|
||||
|
||||
Research by VPN vendor [Atlas][1] shows that VPN usage in the U.S. grew by 53% between March 9 and 15, and it could grow faster. VPN usage in Italy, where the virus outbreak is about two weeks ahead of the U.S., increased by 112% during the last week. "We estimate that VPN usage in the U.S. could increase over 150% by the end of the month," said Rachel Welch, chief operating officer of Atlas VPN, in a statement.
|
||||
|
||||
Businesses are trying to get a handle on how much capacity they'll need by running one-day tests. For example, JPMorgan Chase, Morningstar and analytics startup Arity have tested or plan to test their systems by having employees work from home for a day, according to the [Chicago Tribune][2].
|
||||
|
||||
On the government side, agencies such as [National Oceanic and Atmospheric Administration][3] and NASA have or will run remote networking stress tests to understand their remote networking capacity and what the impact will be if they add thousands of new teleworkers. About [2 million people][4] work for the government in the U.S.
|
||||
|
||||
To help stave off congestion in cellular data networks, the [Federal Communications Commission][5] has granted T-Mobile temporary access to spectrum in the 600MHz band that's owned by other licensees. T-Mobile said it requested the spectrum "to make it easier for Americans to participate in telehealth, distance learning, and telework, and simply remain connected while practicing recommended 'social distancing'."
|
||||
|
||||
Last-mile internet access may become congested in areas that rely on wireless connectivity, some industry players warn.
|
||||
|
||||
[][6]
|
||||
|
||||
"Bottlenecks are likely going to exist in hard-to-reach areas, such as rural locations, where internet access relies on microwave or wireless infrastructure," said Alex Cruz Farmer, product manager for network intelligence company ThousandEyes, which makes software that analyzes the performance of local and wide area networks. "The challenge here is that the available bandwidth is usually much less via these solutions, as well as more latent."
|
||||
|
||||
"We have seen a very small number of platform-related issues or outages due to increased loads, although those have since been resolved," added ThousandEyes' Farmer.
|
||||
|
||||
For its part, AT&T said it has noticed shifts in usage on its wireless network, but capacity has not been taxed.
|
||||
|
||||
"In cities where the coronavirus has had the biggest impact, we are seeing fewer spikes in wireless usage around particular cell towers or particular times of day, because more people are working from home rather than commuting to work, and fewer people are gathering in large crowds at specific locations," [AT&T said in a statement][7]. "We continuously monitor bandwidth usage with tools that analyze and correlate network statistics, which reveal network trends and provide us with performance and capacity reports that help us manage our network."
|
||||
|
||||
Verizon says it hasn't seen a measurable increase in data usage since the coronavirus outbreak, despite a jump in the number of customers working from home. "Verizon’s networks are designed and built to meet future demand and are ready should demand increase or usage patterns change significantly. While this is an unprecedented situation, we know things are changing, and we are ready to adjust network resources as we better understand any shifts in demand," the company said in a statement.
|
||||
|
||||
Verizon has been monitoring network usage in the most affected areas and pledged to work with and prioritize network resources to meet the needs of hospitals, first responders and government agencies. It also announced plans to increase capital spending from between $17 billion and $18 billion to between $17.5 billion to $18.5 billion in 2020 in an effort to "accelerate Verizon's transition to 5G and help support the economy during this period of disruption."
|
||||
|
||||
### Enterprise VPN security concerns
|
||||
|
||||
For enterprises, supporting the myriad network and security technologies that sit between data centers and remote users is no small task, particularly since remote-access VPNs, for example, typically rely on residential internet-access services over which businesses have little control. But IT pros should try to verify that these connections meet enterprise standards, according Tom Nolle, president of CIMI Corp. (Read more of Nolle's thoughts on working at home [here][8].)
|
||||
|
||||
"The home broadband elements, like the ISP and DNS and Wi-Fi, should really be part of a business certification of suitable networking for home work," Nolle said. "I find that DNS services like Google's are less prone to being overloaded than ISPs' services, which suggests users should be required to adopt one of them. OpenDNS is also good."
|
||||
|
||||
The security of home Wi-Fi networks is also an issue, Nolle said. IT pros should require workers to submit screenshots of their Wi-Fi configurations in order to validate the encryption being used. "Home workers often bypass a lot of the security built into enterprise locations," he said.
|
||||
|
||||
Education of new home workers is also important, said Andrew Wertkin, chief strategy officer with DNS software company BlueCat. "There will be remote workers who have not substantially worked from home before, and may or may not understand the implications to security," Wertkin said. "This is especially problematic if the users are accessing the network via personal home devices versus corporate devices."
|
||||
|
||||
An unexpected increase in remote corporate users using a [VPN][9] can also introduce cost challenges.
|
||||
|
||||
"VPN appliances are expensive, and moving to virtualized environments in the cloud often can turn out to be expensive when you take into account compute cost and per-seat cost," Farmer said. A significant increase in per-seat VPN licenses have likely not been budgeted for.
|
||||
|
||||
On the capacity side, systems such as DHCP, which doles out IP addresses, could come under stress with increased remote-access use. "It doesn't matter if there are enough licenses for VPN if the devices connecting cannot obtain network addresses," Wertkin said. "Companies must test for and understand choke points and start implementing strategies to mitigate these risks."
|
||||
|
||||
Along those lines, enterprises "may have to validate the number of SSL sockets their data centers can expose for use, or they could end up running out," Nolle said.
|
||||
|
||||
Paul Collinge, a senior program manager in the Microsoft Office 365 product team, raised similar concerns. Network elements such as VPN concentrators, central network egress equipment such as proxies, DLP, central internet bandwidth, backhaul MPLS circuits, and NAT capability are put under enormous strain when all employees are using them, Collinge wrote in a [blog][10] about optimizing Office 365 traffic for remote staff. The result is poor performance and productivity coupled with a poor user experience for those working from home.
|
||||
|
||||
ThousandEyes' Farmer said enterprises might have to increase the number of VPN concentrators on their networks. "This way, remote-user connectivity is distributed across multiple VPN endpoints and not concentrated," he said. If that's not an option, businesses may have to open firewall ports to allow access to essential applications, which would enable them to scale up, but could also weaken security temporarily.
|
||||
|
||||
### Can VPN split tunneling help?
|
||||
|
||||
Industry players are divided on the use of split tunnerling to minimize coronavirus capacity concerns.
|
||||
|
||||
VPNs can be set up to allow split tunneling, where only traffic intended for the corporate network tunnels through the VPN, BlueCat's Wertkin said. The rest of the traffic goes directly to the internet at large, meaning it isn't subject to the security controls imposed by the tunnel and by tools within the corporate network, which is a security concern. This could lead to remote users' computers being compromised by internet-borne attacks, which could in turn put corporate data and networks at risk.
|
||||
|
||||
Despite this, Microsoftlast week recommended split tunneling as a way for IT admins to address its Office 365 service becoming congested due to an influx of remote users. In [the advisory][10], Microsoft offers a list of URLs and IP addresses for its points of access and describes how IT can use that information to route traffic directly to Office 365.
|
||||
|
||||
The VPN client should be configured so that traffic to identified URLs/IPs/ports is routed in this way, according to Collinge. "This allows us to deliver extremely high performance levels to users wherever they are in the world.”
|
||||
|
||||
ThousandEyes' Farmer said increased use of remote access VPNs might call for a review of network security in general. "[For] enterprises that are still using a legacy network security architecture, it may be time to consider cloud-based security options, which could improve performance for remote workers and diminish the overall use of the enterprise’s WAN circuits."
|
||||
|
||||
Other related developments:
|
||||
|
||||
* The [FCC][11] called on broadband providers to relax their data cap policies in appropriate circumstances, on telephone carriers to waive long-distance and overage fees in appropriate circumstances, on those that serve schools and libraries to work with them on remote learning opportunities, and on all network operators to prioritize the connectivity needs of hospitals and healthcare providers. AT&T and others have responded.
|
||||
* [U.S. Senator Mark R. Warner (D-VA)][12] and 17 other senators sent a letter to the CEOs of eight major ISPs calling on the companies to take steps to accommodate the unprecedented reliance on telepresence services, including telework, online education, telehealth, and remote support services. In the letter, sent to the CEOs of AT&T, CenturyLink, Charter Communications, Comcast, Cox Communications, Sprint, T-Mobile, and Verizon, the senators call on companies to suspend restrictions and fees that could limit telepresence options. Related to the nation's broadband gaps, they also call on the companies to provide free or at-cost broadband options for students affected by the virus who otherwise lack broadband access for online learning during the outbreak.
|
||||
* Vendors including [Cisco][13], Microsoft, [Google][14], [LogMeIn][15], [Spectrum][16] and others are offering free tools to help customers manage security and communications during the outbreak.
|
||||
|
||||
|
||||
|
||||
Join the Network World communities on [Facebook][17] and [LinkedIn][18] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html
|
||||
|
||||
作者:[Michael Cooney][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/Michael-Cooney/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://atlasvpn.com/blog/vpn-usage-in-italy-rockets-by-112-and-53-in-the-us-amidst-coronavirus-outbreak/
|
||||
[2]: https://www.chicagotribune.com/coronavirus/ct-coronavirus-work-from-home-20200312-bscm4ifjvne7dlugjn34sksrz4-story.html
|
||||
[3]: https://federalnewsnetwork.com/workforce/2020/03/agencies-ramp-up-coronavirus-preparations-as-noaa-plans-large-scale-telework-test/
|
||||
[4]: https://fas.org/sgp/crs/misc/R43590.pdf
|
||||
[5]: https://www.fcc.gov/coronavirus
|
||||
[6]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy)
|
||||
[7]: https://about.att.com/pages/COVID-19.html
|
||||
[8]: https://blog.cimicorp.com/?p=4055
|
||||
[9]: https://www.networkworld.com/article/3268744/understanding-virtual-private-networks-and-why-vpns-are-important-to-sd-wan.html
|
||||
[10]: https://techcommunity.microsoft.com/t5/office-365-blog/how-to-quickly-optimize-office-365-traffic-for-remote-staff-amp/ba-p/1214571
|
||||
[11]: https://www.fcc.gov/document/commissioner-starks-statement-fccs-response-covid-19
|
||||
[12]: https://www.warner.senate.gov/public/_cache/files/2/3/239084db-83bd-4641-bf59-371cb829937a/A99E41ACD1BA92FB37BDE54E14A97BFA.letter-to-isps-on-covid-19-final-v2.-signed.pdf
|
||||
[13]: https://blogs.cisco.com/collaboration/cisco-announces-work-from-home-webex-contact-center-quick-deployment
|
||||
[14]: https://cloud.google.com/blog/products/g-suite/helping-businesses-and-schools-stay-connected-in-response-to-coronavirus
|
||||
[15]: https://www.gotomeeting.com/work-remote?clickid=RFlSQF3DBxyOTSr0MKVSfWfHUknShrScK0%3AhTY0&irgwc=1&cid=g2m_noam_ir_aff_cm_pl_ct
|
||||
[16]: https://www.multichannel.com/news/charter-opening-wi-fi-hotspots-in-face-of-covid-19
|
||||
[17]: https://www.facebook.com/NetworkWorld/
|
||||
[18]: https://www.linkedin.com/company/network-world
|
@ -1,86 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (10 Linux command tutorials for beginners and experts)
|
||||
[#]: via: (https://opensource.com/article/19/12/linux-commands)
|
||||
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
|
||||
|
||||
10 Linux command tutorials for beginners and experts
|
||||
======
|
||||
Learn how to make Linux do what you need it to do in Opensource.com's
|
||||
top 10 articles about Linux commands from 2019.
|
||||
![Penguin driving a car with a yellow background][1]
|
||||
|
||||
Using Linux _well_ means understanding what commands are available and what they're capable of doing for you. We have covered a lot of them on Opensource.com during 2019, and here are 10 favorites from the bunch.
|
||||
|
||||
### Using the force at the Linux command line
|
||||
|
||||
The Force has a light side and a dark side. Properly understanding that is crucial to true mastery. In his article [_Using the force at the Linux command line_][2], Alan Formy-Duval explains the **-f** option (also known as **\--force**) for several popular and sometimes dangerous commands.
|
||||
|
||||
### Intro to the Linux useradd command
|
||||
|
||||
Sharing accounts is a bad idea. Instead, give separate accounts to different people (and even different roles) with the quintessential **useradd** command. Part of his venerable series on basic Linux administration, Alan Formy-Duval provides an [_Intro to the Linux useradd command_][3], and, as usual, he explains it in _plain English_ so that both new and experienced admins can understand it.
|
||||
|
||||
### Linux commands to display your hardware information
|
||||
|
||||
What's _inside_ the box? Sometimes it's useful to inspect your hardware without using a screwdriver. In [_Linux commands to display your hardware information_][4], Howard Fosdick provides both popular and obscure commands to help you dig deep into the computer you're using, the computer you're testing at the store before buying, or the computer you're trying to repair.
|
||||
|
||||
### How to encrypt files with gocryptfs on Linux
|
||||
|
||||
Our files hold lots of private data, from social security numbers to personal letters to loved ones. In [_How to encrypt files with gocryptfs on Linux_][5], Brian "Bex" Exelbierd explains how to keep *private *what's meant to be private. As a bonus, he demonstrates encrypting files in a way that has little to no impact on your existing workflow. This isn't a complex PGP-style puzzle of key management and background key agents; this is quick, seamless, and secure file encryption.
|
||||
|
||||
### How to use advanced rsync for large Linux backups
|
||||
|
||||
In the New Year, many people will resolve to be more diligent about making backups. Alan Formy-Duval must have made that resolution years ago, because in [_How to use advanced rsync for large Linux backups_][6], he displays remarkable familiarity with the file synchronization command. You might not remember all the syntax right away, but the idea is to read and process the options, construct your backup command, and then automate it. That's the smart way to use **rsync**, and it's the _only_ way to do backups reliably.
|
||||
|
||||
### Using more to view text files at the Linux command line
|
||||
|
||||
In Scott Nesbitt's article [_Using more to view text files at the Linux command line_][7], the good old default pager **more** finally gets the spotlight. Many people install and use **less**, because it's more flexible than **more**. However, with more and more systems being implemented in the sparsest of containers, the luxury of fancy new tools like **less** or **most** sometimes just doesn't exist. Knowing and using **more** is simple, it's a common default, and it's the production system's debugging tool of last resort.
|
||||
|
||||
### What you probably didn't know about sudo
|
||||
|
||||
The **sudo** command is famous to a fault. People know the **sudo** term, and most of us believe we know what it does. And we're a little bit correct, but as Peter Czanik reveals in his article [_What you probably didn't know about sudo_][8], there's a lot more to the command than just "Simon says." Like that classic childhood game, the **sudo** command is powerful and also prone to silly mistakes—only with greater potential for horrible consequences. This is one game you do not want to lose!
|
||||
|
||||
### How to program with Bash: Syntax and tools
|
||||
|
||||
If you're a Linux, BSD, or Mac (and lately, Windows) user, you may have used the Bash shell interactively. It's a great shell for quick, one-off commands, which is why so many Linux users love to use it as their primary user interface. However, Bash is much more than just a command prompt. It's also a programming language, and if you're already using Bash commands, then the path to automation has never been more straightforward. Learn all about it in David Both's excellent [_How to program with Bash: Syntax and tools_][9].
|
||||
|
||||
### Master the Linux ls command
|
||||
|
||||
The **ls** command is one of those commands that merits a two-letter name; one-letter commands are an optimization for slow terminals where each letter causes a significant delay and also a nice bonus for lazy typists. Seth Kenlon explains how you can [_Master the Linux ls command_][10] and he does so with his usual clarity and pragmatism. Most significantly, in a system where "everything is a file," being able to list the files is crucial.
|
||||
|
||||
### Getting started with the Linux cat command
|
||||
|
||||
The **cat** command (short for con_cat_enate) is deceptively simple. Whether you use it to quickly see the contents of a file or to pipe the contents to another command, you may not be using **cat** to its full potential. Alan Formy-Duval's elucidating [_Getting started with the Linux cat command_][11] offers new ideas to take advantage of a command that lets you open a file without feeling like you've opened it. As a bonus, learn all about **zcat** so you can decompress files without all the trouble of decompression! It's a small and simple thing, but _this_ is what makes Linux great.
|
||||
|
||||
### Continue the journey
|
||||
|
||||
Don't let Opensource.com's 10 best articles about Linux commands of 2019 be the end of your journey. There's much more to discover about Linux and its versatile prompt, so stay tuned in 2020 for more insights. And, if there's a Linux command you want us to know about, please tell us about it in the comments, or share your knowledge with Opensource.com readers by [submitting an article][12] about your favorite Linux command.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/12/linux-commands
|
||||
|
||||
作者:[Moshe Zadka][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/moshez
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background)
|
||||
[2]: https://opensource.com/article/19/5/may-the-force-linux
|
||||
[3]: https://opensource.com/article/19/10/linux-useradd-command
|
||||
[4]: https://opensource.com/article/19/9/linux-commands-hardware-information
|
||||
[5]: https://opensource.com/article/19/8/how-encrypt-files-gocryptfs
|
||||
[6]: https://opensource.com/article/19/5/advanced-rsync
|
||||
[7]: https://opensource.com/article/19/1/more-text-files-linux
|
||||
[8]: https://opensource.com/article/19/10/know-about-sudo
|
||||
[9]: https://opensource.com/article/19/10/programming-bash-syntax-tools
|
||||
[10]: https://opensource.com/article/19/7/master-ls-command
|
||||
[11]: https://opensource.com/article/19/2/getting-started-cat-command
|
||||
[12]: https://opensource.com/how-submit-article
|
@ -1,106 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to Install Netbeans on Ubuntu and Other Linux)
|
||||
[#]: via: (https://itsfoss.com/install-netbeans-ubuntu/)
|
||||
[#]: author: (Community https://itsfoss.com/author/itsfoss/)
|
||||
|
||||
How to Install Netbeans on Ubuntu and Other Linux
|
||||
======
|
||||
|
||||
_**In this tutorial, you’ll learn various ways to install Netbeans IDE on Ubuntu and other Linux distributions.**_
|
||||
|
||||
[NetBeans][1] is an open source integrated development environment that comes with good cross-platform support. This tool has been recognized by the Java and C/C++ development community widely.
|
||||
|
||||
The development environment is quite flexible. You can configure this tool to support a wide array of development objectives. Practically, you can develop Web, Desktop and Mobile Applications without leaving this platform. It’s amazing, isn’t it? Besides this, the user can add a wide array of known languages such as [PHP][2], C, C++, HTML, [Ajax][3], JavaScript, JSP, Ruby on Rails and the list goes on and on!
|
||||
|
||||
If you are looking to install Netbeans on Linux, you have several ways to do that. I have written this tutorial primarily for Ubuntu but some installation methods are applicable to other distributions as well.
|
||||
|
||||
* [Installing Netbeans on Ubuntu using apt][4]: for Ubuntu and Ubuntu-based distributions but usually **it has older version of Netbeans**
|
||||
* [Installing Netbeans on Ubuntu using Snap][5]: for any Linux distribution that has Snap packaging support enabled
|
||||
* [Installing Netbeans using Flatpak][6]: for any Linux distribution with Flatpak package support
|
||||
|
||||
|
||||
|
||||
### Installing Netbeans IDE on Ubuntu using Apt package manager
|
||||
|
||||
If you search for Netbeans in Ubuntu Software Center, you’ll find two Netbeans available. The Apache Netbeans is the snap version which is bigger in download size but gives you the latest Netbeans.
|
||||
|
||||
You can install it in one click. No need to open terminal. Easiest way.
|
||||
|
||||
![Apache Netbeans in Ubuntu Software Center][7]
|
||||
|
||||
You may also opt for using the apt command but with apt version, you won’t get the latest Netbeans. For example, at the time of writing this tutorial, Ubuntu 18.04 has Netbeans version 10 available via Apt while Snap has the latest Netbeans 11.
|
||||
|
||||
If you are a fan of [apt or apt-get][8], you can [enable the universe repository][9] and install Netbeans using this command in the terminal:
|
||||
|
||||
```
|
||||
sudo apt install netbeans
|
||||
```
|
||||
|
||||
### Installing Netbeans IDE on any Linux distribution using Snap
|
||||
|
||||
![][10]
|
||||
|
||||
Snap is a universal package manager and if [you have enabled Snap on your distribution][11], you can install it using the following command:
|
||||
|
||||
```
|
||||
sudo snap install netbeans --classic
|
||||
```
|
||||
|
||||
The process might take some time to complete because the total download size is around 1 GB. Once done, you will see the app in the application launcher.
|
||||
|
||||
Not only you’ll get the latest Netbeans with Snap, the installed version will be automatically updated to the newer version.
|
||||
|
||||
### Installing Netbeans using Flatpak
|
||||
|
||||
[Flatpak][12] is another universal packaging like Snap. Some distributions support Flatpak by default while you can [enable Flatpak support][13] on others.
|
||||
|
||||
Once you have the Flatpak support on your distribution, you can use the following command to install Netbeans:
|
||||
|
||||
```
|
||||
flatpak install flathub org.apache.netbeans
|
||||
```
|
||||
|
||||
Alernatively, you can always download the source code of this open source software and compile it yourself.
|
||||
|
||||
[Download Netbeans][14]
|
||||
|
||||
Hopefully, you selected one of the above methods to install Netbeans on your Ubuntu Linux system. But which one did you use? Did you face any issues? Do let us know.
|
||||
|
||||
![][15]
|
||||
|
||||
### Srimanta Koley
|
||||
|
||||
Srimanta is a passionate writer, a distrohopper & open source enthusiast. He is extremely fond of everything related to technology. He loves to read books and has an unhealthy addiction to the 90s!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-netbeans-ubuntu/
|
||||
|
||||
作者:[Community][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/itsfoss/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://netbeans.org/
|
||||
[2]: https://www.php.net/
|
||||
[3]: https://en.wikipedia.org/wiki/Ajax_(programming)
|
||||
[4]: tmp.ZNFNEC210y#apt
|
||||
[5]: tmp.ZNFNEC210y#snap
|
||||
[6]: tmp.ZNFNEC210y#flatpak
|
||||
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/apache-netbeans-ubuntu-software-center.jpg?ssl=1
|
||||
[8]: https://itsfoss.com/apt-vs-apt-get-difference/
|
||||
[9]: https://itsfoss.com/ubuntu-repositories/
|
||||
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/Install_Netbeans_Linux.jpg?ssl=1
|
||||
[11]: https://itsfoss.com/install-snap-linux/
|
||||
[12]: https://flatpak.org/
|
||||
[13]: https://itsfoss.com/flatpak-guide/
|
||||
[14]: https://netbeans.apache.org/download/index.html
|
||||
[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/srimanta.jpg?ssl=1
|
@ -0,0 +1,148 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Viewing and configuring password aging on Linux)
|
||||
[#]: via: (https://www.networkworld.com/article/3532815/viewing-and-configuring-password-aging-on-linux.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
Viewing and configuring password aging on Linux
|
||||
======
|
||||
With proper settings, Linux users can be forced to periodically change their passwords. Here's how to view password aging settings and how to configure some of the settings.
|
||||
BlueBay2014 / Getty Images
|
||||
|
||||
User passwords on Linux systems can be configured to be permanent or can be set to expire so that individuals must reset them periodically. Periodic password changing is generally considered good practice for security reasons, but is not configured by default.
|
||||
|
||||
To view and modify password-aging settings, you need to be familiar with a couple important commands – the **chage** command along with its **-l** option and the **passwd** command with its **-S**. These commands, along with a few other **chage** commands that are used to configure password aging are described in this post.
|
||||
|
||||
[[Get regularly scheduled insights by signing up for Network World newsletters.]][1]
|
||||
|
||||
### Viewing password aging settings
|
||||
|
||||
The way to determine if password aging is in place for some particular account is to use the **chage** command as shown below. Note that root authority is needed to check any account other than your own. Notice the password expiration date below.
|
||||
|
||||
```
|
||||
$ sudo chage -l dory
|
||||
Last password change : Mar 15, 2020
|
||||
Password expires : Jun 13, 2020 <==
|
||||
Password inactive : never
|
||||
Account expires : never
|
||||
Minimum number of days between password change : 10
|
||||
Maximum number of days between password change : 90
|
||||
Number of days of warning before password expires : 14
|
||||
```
|
||||
|
||||
If password aging is _not_ being applied, the account information would look like this:
|
||||
|
||||
```
|
||||
$ sudo chage -l nemo
|
||||
Last password change : Jan 14, 2019
|
||||
Password expires : never <==
|
||||
Password inactive : never
|
||||
Account expires : Mar 26, 2706989
|
||||
Minimum number of days between password change : 0
|
||||
Maximum number of days between password change : 99999
|
||||
Number of days of warning before password expires : 7
|
||||
```
|
||||
|
||||
You can also view some of this information using the **passwd -S** command, but you'll need to know what each of the fields in the output represents:
|
||||
|
||||
```
|
||||
dory$ passwd -S
|
||||
dory P 03/15/2020 10 90 14 -1
|
||||
```
|
||||
|
||||
The seven fields here represent:
|
||||
|
||||
* 1 – username
|
||||
* 2 – account status (L=locked, NP=no password, P=usable password)
|
||||
* 3 – date of the last password change
|
||||
* 4 – minimum age for a change (password cannot be changed if it isn’t this many days old)
|
||||
* 5 – maximum age (password must be changed by the time it gets this many days old)
|
||||
* 6 – number of days before a required change that warnings will be provided
|
||||
* 7 – number of days after password expires before it is locked (made inactive)
|
||||
|
||||
|
||||
|
||||
One interesting thing to note is that the **chage** command doesn’t show you if an account is locked; it only shows the password aging settings. The **passwd -S** command, on the other hand, will tell you when a password is locked. In this example, note that the account status is “L”:
|
||||
|
||||
[][2]
|
||||
|
||||
```
|
||||
$ sudo passwd -S dorothy
|
||||
dorothy L 07/09/2019 0 99999 7 10
|
||||
```
|
||||
|
||||
This locking takes effect in the **/etc/shadow** file with the field that normally contains the password "hash" field becoming just a "!".
|
||||
|
||||
```
|
||||
$ sudo grep dorothy /etc/shadow
|
||||
dorothy:!:18086:0:99999:7:10:: <==
|
||||
```
|
||||
|
||||
That fact that an account is locked is not obvious in the **chage** output:
|
||||
|
||||
```
|
||||
$ sudo chage -l dorothy
|
||||
Last password change : Jul 09, 2019
|
||||
Password expires : never
|
||||
Password inactive : never
|
||||
Account expires : never
|
||||
Minimum number of days between password change : 0
|
||||
Maximum number of days between password change : 99999
|
||||
Number of days of warning before password expires : 7
|
||||
```
|
||||
|
||||
### Some options for password aging
|
||||
|
||||
The most commonly used settings are for the minimum and maximum days. These are often used in combination. For example, you might configure a password so that it cannot be used for more than 90 days (maximum) and then add that it cannot be changed before it has been in effect for a week or 10 days (minimum days). This ensures that users won’t change a password when required and then immediately change it back to what it was previously.
|
||||
|
||||
```
|
||||
$ sudo chage -M 90 -m 10 shark
|
||||
$ sudo chage -l shark
|
||||
Last password change : Mar 16, 2020
|
||||
Password expires : Jun 14, 2020
|
||||
Password inactive : never
|
||||
Account expires : never
|
||||
Minimum number of days between password change : 10 <==
|
||||
Maximum number of days between password change : 90 <==
|
||||
Number of days of warning before password expires : 7
|
||||
```
|
||||
|
||||
You can also set a specific expiration date for an account using the **-E** option.
|
||||
|
||||
```
|
||||
$ sudo chage -E 2020-11-11 tadpole
|
||||
$ sudo chage -l tadpole
|
||||
Last password change : Oct 15, 2019
|
||||
Password expires : never
|
||||
Password inactive : never
|
||||
Account expires : Nov 11, 2020 <==
|
||||
Minimum number of days between password change : 0
|
||||
Maximum number of days between password change : 99999
|
||||
Number of days of warning before password expires : 7
|
||||
```
|
||||
|
||||
Password aging can be an important option as long as it doesn't encourage users to use passwords that are way too simple or write them down in insecure ways. For more information on controlling the character of passwords (e.g., combinations of uppercase and lowercase letters, digits, etc.), check out this post on [password complexity][3].
|
||||
|
||||
Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3532815/viewing-and-configuring-password-aging-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://www.networkworld.com/newsletters/signup.html
|
||||
[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy)
|
||||
[3]: https://www.networkworld.com/article/2726217/how-to-enforce-password-complexity-on-linux.html
|
||||
[4]: https://www.facebook.com/NetworkWorld/
|
||||
[5]: https://www.linkedin.com/company/network-world
|
@ -0,0 +1,663 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Share data between C and Python with this messaging library)
|
||||
[#]: via: (https://opensource.com/article/20/3/zeromq-c-python)
|
||||
[#]: author: (Cristiano L. Fontana https://opensource.com/users/cristianofontana)
|
||||
|
||||
Share data between C and Python with this messaging library
|
||||
======
|
||||
ZeroMQ makes for a fast and resilient messaging library to gather data
|
||||
and share between multiple languages.
|
||||
![Chat via email][1]
|
||||
|
||||
I've had moments as a software engineer when I'm asked to do a task that sends shivers down my spine. One such moment was when I had to write an interface between some new hardware infrastructure that requires C and a cloud infrastructure, which is primarily Python.
|
||||
|
||||
One strategy could be to [write an extension in C][2], which Python supports by design. A quick glance at the documentation shows this would mean writing a good amount of C. That can be good in some cases, but it's not what I prefer to do. Another strategy is to put the two tasks in separate processes and exchange messages between the two with the [ZeroMQ messaging library][3].
|
||||
|
||||
When I experienced this type of scenario before discovering ZeroMQ, I went through the extension-writing path. It was not that bad, but it is very time-consuming and convoluted. Nowadays, to avoid that, I subdivide a system into independent processes that exchange information through messages sent over [communication sockets][4]. With this approach, several programming languages can coexist, and each process is simpler and thus easier to debug.
|
||||
|
||||
ZeroMQ provides an even easier process:
|
||||
|
||||
1. Write a small shim in C that reads data from the hardware and sends whatever it finds as a message.
|
||||
2. Write a Python interface between the new and existing infrastructure.
|
||||
|
||||
|
||||
|
||||
One of ZeroMQ's project's founders is [Pieter Hintjens][5], a remarkable person with [interesting views and writings][6].
|
||||
|
||||
### Prerequisites
|
||||
|
||||
For this tutorial, you will need:
|
||||
|
||||
* A C compiler (e.g., [GCC][7] or [Clang][8])
|
||||
* The [**libzmq** library][9]
|
||||
* [Python 3][10]
|
||||
* [ZeroMQ bindings][11] for python
|
||||
|
||||
|
||||
|
||||
Install them on Fedora with:
|
||||
|
||||
|
||||
```
|
||||
`$ dnf install clang zeromq zeromq-devel python3 python3-zmq`
|
||||
```
|
||||
|
||||
For Debian or Ubuntu:
|
||||
|
||||
|
||||
```
|
||||
`$ apt-get install clang libzmq5 libzmq3-dev python3 python3-zmq`
|
||||
```
|
||||
|
||||
If you run into any issues, refer to each project's installation instructions (which are linked above).
|
||||
|
||||
### Writing the hardware-interfacing library
|
||||
|
||||
Since this is a hypothetical scenario, this tutorial will write a fictitious library with two functions:
|
||||
|
||||
* **fancyhw_init()** to initiate the (hypothetical) hardware
|
||||
* **fancyhw_read_val()** to return a value read from the hardware
|
||||
|
||||
|
||||
|
||||
Save the library's full source code to a file named **libfancyhw.h**:
|
||||
|
||||
|
||||
```
|
||||
#ifndef LIBFANCYHW_H
|
||||
#define LIBFANCYHW_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
// This is the fictitious hardware interfacing library
|
||||
|
||||
void fancyhw_init(unsigned int init_param)
|
||||
{
|
||||
[srand][12](init_param);
|
||||
}
|
||||
|
||||
int16_t fancyhw_read_val(void)
|
||||
{
|
||||
return (int16_t)[rand][13]();
|
||||
}
|
||||
|
||||
#endif
|
||||
```
|
||||
|
||||
This library can simulate the data you want to pass between languages, thanks to the random number generator.
|
||||
|
||||
### Designing a C interface
|
||||
|
||||
The following will go step-by-step through writing the C interface—from including the libraries to managing the data transfer.
|
||||
|
||||
#### Libraries
|
||||
|
||||
Begin by loading the necessary libraries (the purpose of each library is in a comment in the code):
|
||||
|
||||
|
||||
```
|
||||
// For printf()
|
||||
#include <stdio.h>
|
||||
// For EXIT_*
|
||||
#include <stdlib.h>
|
||||
// For memcpy()
|
||||
#include <string.h>
|
||||
// For sleep()
|
||||
#include <unistd.h>
|
||||
|
||||
#include <zmq.h>
|
||||
|
||||
#include "libfancyhw.h"
|
||||
```
|
||||
|
||||
#### Significant parameters
|
||||
|
||||
Define the **main** function and the significant parameters needed for the rest of the program:
|
||||
|
||||
|
||||
```
|
||||
int main(void)
|
||||
{
|
||||
const unsigned int INIT_PARAM = 12345;
|
||||
const unsigned int REPETITIONS = 10;
|
||||
const unsigned int PACKET_SIZE = 16;
|
||||
const char *TOPIC = "fancyhw_data";
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
#### Initialization
|
||||
|
||||
Both libraries need some initialization. The fictitious one needs just one parameter:
|
||||
|
||||
|
||||
```
|
||||
`fancyhw_init(INIT_PARAM);`
|
||||
```
|
||||
|
||||
The ZeroMQ library needs some real initialization. First, define a **context**—an object that manages all the sockets:
|
||||
|
||||
|
||||
```
|
||||
void *context = zmq_ctx_new();
|
||||
|
||||
if (!context)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_ctx_new(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
```
|
||||
|
||||
Then define the socket used to deliver data. ZeroMQ supports several types of sockets, each with its application. Use a **publish** socket (also known as **PUB** socket), which can deliver copies of a message to multiple receivers. This approach enables you to attach several receivers that will all get the same messages. If there are no receivers, the messages will be discarded (i.e., they will not be queued). Do this with:
|
||||
|
||||
|
||||
```
|
||||
`void *data_socket = zmq_socket(context, ZMQ_PUB);`
|
||||
```
|
||||
|
||||
The socket must be bound to an address so that the clients know where to connect. In this case, use the [TCP transport layer][15] (there are [other options][16], but TCP is a good default choice):
|
||||
|
||||
|
||||
```
|
||||
const int rb = zmq_bind(data_socket, "tcp://*:5555");
|
||||
|
||||
if (rb != 0)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_ctx_new(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
```
|
||||
|
||||
Next, calculate some useful values that you will need later. Note **TOPIC** in the code below; **PUB** sockets need a topic to be associated with the messages they send. Topics can be used by the receivers to filter messages:
|
||||
|
||||
|
||||
```
|
||||
const size_t topic_size = [strlen][17](TOPIC);
|
||||
const size_t envelope_size = topic_size + 1 + PACKET_SIZE * sizeof(int16_t);
|
||||
|
||||
[printf][14]("Topic: %s; topic size: %zu; Envelope size: %zu\n", TOPIC, topic_size, envelope_size);
|
||||
```
|
||||
|
||||
#### Sending messages
|
||||
|
||||
Start a loop that sends **REPETITIONS** messages:
|
||||
|
||||
|
||||
```
|
||||
for (unsigned int i = 0; i < REPETITIONS; i++)
|
||||
{
|
||||
...
|
||||
```
|
||||
|
||||
Before sending a message, fill a buffer of **PACKET_SIZE** values. The library provides signed integers of 16 bits. Since the dimension of an **int** in C is not defined, use an **int** with a specific width:
|
||||
|
||||
|
||||
```
|
||||
int16_t buffer[PACKET_SIZE];
|
||||
|
||||
for (unsigned int j = 0; j < PACKET_SIZE; j++)
|
||||
{
|
||||
buffer[j] = fancyhw_read_val();
|
||||
}
|
||||
|
||||
[printf][14]("Read %u data values\n", PACKET_SIZE);
|
||||
```
|
||||
|
||||
The first step in message preparation and delivery is creating a ZeroMQ message and allocating the memory necessary for your message. This empty message is an envelope to store the data you will ship:
|
||||
|
||||
|
||||
```
|
||||
zmq_msg_t envelope;
|
||||
|
||||
const int rmi = zmq_msg_init_size(&envelope, envelope_size);
|
||||
if (rmi != 0)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_msg_init_size(): %s\n", zmq_strerror(errno));
|
||||
|
||||
zmq_msg_close(&envelope);
|
||||
|
||||
break;
|
||||
}
|
||||
```
|
||||
|
||||
Now that the memory is allocated, store the data in the ZeroMQ message "envelope." The **zmq_msg_data()** function returns a pointer to the beginning of the buffer in the envelope. The first part is the topic, followed by a space, then the binary data. Add whitespace as a separator between the topic and the data. To move along the buffer, you have to play with casts and [pointer arithmetic][18]. (Thank you, C, for making things straightforward.) Do this with:
|
||||
|
||||
|
||||
```
|
||||
[memcpy][19](zmq_msg_data(&envelope), TOPIC, topic_size);
|
||||
[memcpy][19]((void*)((char*)zmq_msg_data(&envelope) + topic_size), " ", 1);
|
||||
[memcpy][19]((void*)((char*)zmq_msg_data(&envelope) + 1 + topic_size), buffer, PACKET_SIZE * sizeof(int16_t));
|
||||
```
|
||||
|
||||
Send the message through the **data_socket**:
|
||||
|
||||
|
||||
```
|
||||
const size_t rs = zmq_msg_send(&envelope, data_socket, 0);
|
||||
if (rs != envelope_size)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_msg_send(): %s\n", zmq_strerror(errno));
|
||||
|
||||
zmq_msg_close(&envelope);
|
||||
|
||||
break;
|
||||
}
|
||||
```
|
||||
|
||||
Make sure to dispose of the envelope after you use it:
|
||||
|
||||
|
||||
```
|
||||
zmq_msg_close(&envelope);
|
||||
|
||||
[printf][14]("Message sent; i: %u, topic: %s\n", i, TOPIC);
|
||||
```
|
||||
|
||||
#### Clean it up
|
||||
|
||||
Because C does not provide [garbage collection][20], you have to tidy up. After you are done sending your messages, close the program with the clean-up needed to release the used memory:
|
||||
|
||||
|
||||
```
|
||||
const int rc = zmq_close(data_socket);
|
||||
|
||||
if (rc != 0)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_close(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
const int rd = zmq_ctx_destroy(context);
|
||||
|
||||
if (rd != 0)
|
||||
{
|
||||
[printf][14]("Error occurred during zmq_ctx_destroy(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
```
|
||||
|
||||
#### The entire C program
|
||||
|
||||
Save the full interface library below to a local file called **hw_interface.c**:
|
||||
|
||||
|
||||
```
|
||||
// For printf()
|
||||
#include <stdio.h>
|
||||
// For EXIT_*
|
||||
#include <stdlib.h>
|
||||
// For memcpy()
|
||||
#include <string.h>
|
||||
// For sleep()
|
||||
#include <unistd.h>
|
||||
|
||||
#include <zmq.h>
|
||||
|
||||
#include "libfancyhw.h"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
const unsigned int INIT_PARAM = 12345;
|
||||
const unsigned int REPETITIONS = 10;
|
||||
const unsigned int PACKET_SIZE = 16;
|
||||
const char *TOPIC = "fancyhw_data";
|
||||
|
||||
fancyhw_init(INIT_PARAM);
|
||||
|
||||
void *context = zmq_ctx_new();
|
||||
|
||||
if (!context)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_ctx_new(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
void *data_socket = zmq_socket(context, ZMQ_PUB);
|
||||
|
||||
const int rb = zmq_bind(data_socket, "tcp://*:5555");
|
||||
|
||||
if (rb != 0)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_ctx_new(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
const size_t topic_size = [strlen][17](TOPIC);
|
||||
const size_t envelope_size = topic_size + 1 + PACKET_SIZE * sizeof(int16_t);
|
||||
|
||||
[printf][14]("Topic: %s; topic size: %zu; Envelope size: %zu\n", TOPIC, topic_size, envelope_size);
|
||||
|
||||
for (unsigned int i = 0; i < REPETITIONS; i++)
|
||||
{
|
||||
int16_t buffer[PACKET_SIZE];
|
||||
|
||||
for (unsigned int j = 0; j < PACKET_SIZE; j++)
|
||||
{
|
||||
buffer[j] = fancyhw_read_val();
|
||||
}
|
||||
|
||||
[printf][14]("Read %u data values\n", PACKET_SIZE);
|
||||
|
||||
zmq_msg_t envelope;
|
||||
|
||||
const int rmi = zmq_msg_init_size(&envelope, envelope_size);
|
||||
if (rmi != 0)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_msg_init_size(): %s\n", zmq_strerror(errno));
|
||||
|
||||
zmq_msg_close(&envelope);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
[memcpy][19](zmq_msg_data(&envelope), TOPIC, topic_size);
|
||||
|
||||
[memcpy][19]((void*)((char*)zmq_msg_data(&envelope) + topic_size), " ", 1);
|
||||
|
||||
[memcpy][19]((void*)((char*)zmq_msg_data(&envelope) + 1 + topic_size), buffer, PACKET_SIZE * sizeof(int16_t));
|
||||
|
||||
const size_t rs = zmq_msg_send(&envelope, data_socket, 0);
|
||||
if (rs != envelope_size)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_msg_send(): %s\n", zmq_strerror(errno));
|
||||
|
||||
zmq_msg_close(&envelope);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
zmq_msg_close(&envelope);
|
||||
|
||||
[printf][14]("Message sent; i: %u, topic: %s\n", i, TOPIC);
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
const int rc = zmq_close(data_socket);
|
||||
|
||||
if (rc != 0)
|
||||
{
|
||||
[printf][14]("ERROR: ZeroMQ error occurred during zmq_close(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
const int rd = zmq_ctx_destroy(context);
|
||||
|
||||
if (rd != 0)
|
||||
{
|
||||
[printf][14]("Error occurred during zmq_ctx_destroy(): %s\n", zmq_strerror(errno));
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
```
|
||||
|
||||
Compile using the command:
|
||||
|
||||
|
||||
```
|
||||
`$ clang -std=c99 -I. hw_interface.c -lzmq -o hw_interface`
|
||||
```
|
||||
|
||||
If there are no compilation errors, you can run the interface. What's great is that ZeroMQ **PUB** sockets can run without any applications sending or retrieving data. That reduces complexity because there is no obligation in terms of which process needs to start first.
|
||||
|
||||
Run the interface:
|
||||
|
||||
|
||||
```
|
||||
$ ./hw_interface
|
||||
Topic: fancyhw_data; topic size: 12; Envelope size: 45
|
||||
Read 16 data values
|
||||
Message sent; i: 0, topic: fancyhw_data
|
||||
Read 16 data values
|
||||
Message sent; i: 1, topic: fancyhw_data
|
||||
Read 16 data values
|
||||
...
|
||||
...
|
||||
```
|
||||
|
||||
The output shows the data being sent through ZeroMQ. Now you need an application to read the data.
|
||||
|
||||
### Write a Python data processor
|
||||
|
||||
You are now ready to pass the data from C to a Python application.
|
||||
|
||||
#### Libraries
|
||||
|
||||
You need two libraries to help transfer data. First, you need ZeroMQ bindings in Python:
|
||||
|
||||
|
||||
```
|
||||
`$ python3 -m pip install zmq`
|
||||
```
|
||||
|
||||
The other is the [**struct** library][21], which decodes binary data. It's commonly available with the Python standard library, so there's no need to **pip install** it.
|
||||
|
||||
The first part of the Python program imports both of these libraries:
|
||||
|
||||
|
||||
```
|
||||
import zmq
|
||||
import struct
|
||||
```
|
||||
|
||||
#### Significant parameters
|
||||
|
||||
To use ZeroMQ, you must subscribe to the same topic used in the constant **TOPIC** above:
|
||||
|
||||
|
||||
```
|
||||
topic = "fancyhw_data".encode('ascii')
|
||||
|
||||
print("Reading messages with topic: {}".format(topic))
|
||||
```
|
||||
|
||||
#### Initialization
|
||||
|
||||
Next, initialize the context and the socket. Use a **subscribe** socket (also known as a **SUB** socket), which is the natural partner of the **PUB** socket. The socket also needs to subscribe to the right topic:
|
||||
|
||||
|
||||
```
|
||||
with zmq.Context() as context:
|
||||
socket = context.socket(zmq.SUB)
|
||||
|
||||
socket.connect("tcp://127.0.0.1:5555")
|
||||
socket.setsockopt(zmq.SUBSCRIBE, topic)
|
||||
|
||||
i = 0
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
#### Receiving messages
|
||||
|
||||
Start an infinite loop that waits for new messages to be delivered to the SUB socket. The loop will be closed if you press **Ctrl+C** or if an error occurs:
|
||||
|
||||
|
||||
```
|
||||
try:
|
||||
while True:
|
||||
|
||||
... # we will fill this in next
|
||||
|
||||
except KeyboardInterrupt:
|
||||
socket.close()
|
||||
except Exception as error:
|
||||
print("ERROR: {}".format(error))
|
||||
socket.close()
|
||||
```
|
||||
|
||||
The loop waits for new messages to arrive with the **recv()** method. Then it splits whatever is received at the first space to separate the topic from the content:
|
||||
|
||||
|
||||
```
|
||||
`binary_topic, data_buffer = socket.recv().split(b' ', 1)`
|
||||
```
|
||||
|
||||
#### Decoding messages
|
||||
|
||||
Python does yet not know that the topic is a string, so decode it using the standard ASCII encoding:
|
||||
|
||||
|
||||
```
|
||||
topic = binary_topic.decode(encoding = 'ascii')
|
||||
|
||||
print("Message {:d}:".format(i))
|
||||
print("\ttopic: '{}'".format(topic))
|
||||
```
|
||||
|
||||
The next step is to read the binary data using the **struct** library, which can convert shapeless binary blobs to significant values. First, calculate the number of values stored in the packet. This example uses 16-bit signed integers that correspond to an "h" in the **struct** [format][22]:
|
||||
|
||||
|
||||
```
|
||||
packet_size = len(data_buffer) // struct.calcsize("h")
|
||||
|
||||
print("\tpacket size: {:d}".format(packet_size))
|
||||
```
|
||||
|
||||
By knowing how many values are in the packet, you can define the format by preparing a string with the number of values and their types (e.g., "**16h**"):
|
||||
|
||||
|
||||
```
|
||||
`struct_format = "{:d}h".format(packet_size)`
|
||||
```
|
||||
|
||||
Convert that binary blob to a series of numbers that you can immediately print:
|
||||
|
||||
|
||||
```
|
||||
data = struct.unpack(struct_format, data_buffer)
|
||||
|
||||
print("\tdata: {}".format(data))
|
||||
```
|
||||
|
||||
#### The full Python program
|
||||
|
||||
Here is the complete data receiver in Python:
|
||||
|
||||
|
||||
```
|
||||
#! /usr/bin/env python3
|
||||
|
||||
import zmq
|
||||
import struct
|
||||
|
||||
topic = "fancyhw_data".encode('ascii')
|
||||
|
||||
print("Reading messages with topic: {}".format(topic))
|
||||
|
||||
with zmq.Context() as context:
|
||||
socket = context.socket(zmq.SUB)
|
||||
|
||||
socket.connect("tcp://127.0.0.1:5555")
|
||||
socket.setsockopt(zmq.SUBSCRIBE, topic)
|
||||
|
||||
i = 0
|
||||
|
||||
try:
|
||||
while True:
|
||||
binary_topic, data_buffer = socket.recv().split(b' ', 1)
|
||||
|
||||
topic = binary_topic.decode(encoding = 'ascii')
|
||||
|
||||
print("Message {:d}:".format(i))
|
||||
print("\ttopic: '{}'".format(topic))
|
||||
|
||||
packet_size = len(data_buffer) // struct.calcsize("h")
|
||||
|
||||
print("\tpacket size: {:d}".format(packet_size))
|
||||
|
||||
struct_format = "{:d}h".format(packet_size)
|
||||
|
||||
data = struct.unpack(struct_format, data_buffer)
|
||||
|
||||
print("\tdata: {}".format(data))
|
||||
|
||||
i += 1
|
||||
|
||||
except KeyboardInterrupt:
|
||||
socket.close()
|
||||
except Exception as error:
|
||||
print("ERROR: {}".format(error))
|
||||
socket.close()
|
||||
```
|
||||
|
||||
Save it to a file called **online_analysis.py**. Python does not need to be compiled, so you can run the program immediately.
|
||||
|
||||
Here is the output:
|
||||
|
||||
|
||||
```
|
||||
$ ./online_analysis.py
|
||||
Reading messages with topic: b'fancyhw_data'
|
||||
Message 0:
|
||||
topic: 'fancyhw_data'
|
||||
packet size: 16
|
||||
data: (20946, -23616, 9865, 31416, -15911, -10845, -5332, 25662, 10955, -32501, -18717, -24490, -16511, -28861, 24205, 26568)
|
||||
Message 1:
|
||||
topic: 'fancyhw_data'
|
||||
packet size: 16
|
||||
data: (12505, 31355, 14083, -19654, -9141, 14532, -25591, 31203, 10428, -25564, -732, -7979, 9529, -27982, 29610, 30475)
|
||||
...
|
||||
...
|
||||
```
|
||||
|
||||
### Conclusion
|
||||
|
||||
This tutorial describes an alternative way of gathering data from C-based hardware interfaces and providing it to Python-based infrastructures. You can take this data and analyze it or pass it off in any number of directions. It employs a messaging library to deliver data between a "gatherer" and an "analyzer" instead of having a monolithic piece of software that does everything.
|
||||
|
||||
This tutorial also increases what I call "software granularity." In other words, it subdivides the software into smaller units. One of the benefits of this strategy is the possibility of using different programming languages at the same time with minimal interfaces acting as shims between them.
|
||||
|
||||
In practice, this design allows software engineers to work both more collaboratively and independently. Different teams may work on different steps of the analysis, choosing the tool they prefer. Another benefit is the parallelism that comes for free since all the processes can run in parallel. The [ZeroMQ messaging library][3] is a remarkable piece of software that makes all of this much easier.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/3/zeromq-c-python
|
||||
|
||||
作者:[Cristiano L. Fontana][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/cristianofontana
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_chat_communication_message.png?itok=LKjiLnQu (Chat via email)
|
||||
[2]: https://docs.python.org/3/extending/extending.html
|
||||
[3]: https://zeromq.org/
|
||||
[4]: https://en.wikipedia.org/wiki/Network_socket
|
||||
[5]: https://en.wikipedia.org/wiki/Pieter_Hintjens
|
||||
[6]: http://hintjens.com/
|
||||
[7]: https://gcc.gnu.org/
|
||||
[8]: https://clang.llvm.org/
|
||||
[9]: https://github.com/zeromq/libzmq#installation-of-binary-packages-
|
||||
[10]: https://www.python.org/downloads/
|
||||
[11]: https://zeromq.org/languages/python/
|
||||
[12]: http://www.opengroup.org/onlinepubs/009695399/functions/srand.html
|
||||
[13]: http://www.opengroup.org/onlinepubs/009695399/functions/rand.html
|
||||
[14]: http://www.opengroup.org/onlinepubs/009695399/functions/printf.html
|
||||
[15]: https://en.wikipedia.org/wiki/Transmission_Control_Protocol
|
||||
[16]: http://zguide.zeromq.org/page:all#Plugging-Sockets-into-the-Topology
|
||||
[17]: http://www.opengroup.org/onlinepubs/009695399/functions/strlen.html
|
||||
[18]: https://en.wikipedia.org/wiki/Pointer_%28computer_programming%29%23C_and_C++
|
||||
[19]: http://www.opengroup.org/onlinepubs/009695399/functions/memcpy.html
|
||||
[20]: https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
|
||||
[21]: https://docs.python.org/3/library/struct.html
|
||||
[22]: https://docs.python.org/3/library/struct.html#format-characters
|
@ -0,0 +1,142 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Top 10 open source tools for working from home)
|
||||
[#]: via: (https://opensource.com/article/20/3/open-source-working-home)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
Top 10 open source tools for working from home
|
||||
======
|
||||
Whether you're a WFH veteran or a remote work newbie, these tools make
|
||||
communication and collaboration a snap.
|
||||
![Oatmeal and a laptop.][1]
|
||||
|
||||
If you work from home, you know how important it is to have a great set of tools that stay out of your way and let you focus on what matters. The harder you work during work hours, the more easily you can relax once the workday is through.
|
||||
|
||||
I've been working from home for years, and here are my top picks for the best tools open source has to offer the remote worker.
|
||||
|
||||
### Jitsi video conferencing
|
||||
|
||||
![Jitsi screenshot][2]
|
||||
|
||||
When you're away from your colleagues, it's vital to connect a few times a week, even if it's just so you have a human connection as you otherwise toil away in solitude. There are lots of video conferencing systems on the market, but in my experience, the simplest and the best happens to be the open source [Jitsi][3].
|
||||
|
||||
With an URL that's easy to remember ([meet.jit.si][3]) and on-demand conference rooms, Jitsi makes it shockingly simple to start an impromptu meeting. And better yet, there's no registration required. You just go to [meet.jit.si][3], grab a conference room with a human-friendly, randomly generated URL (no random assortment of letters and numbers here), and you're chatting in no time. If you do choose to register, there are several calendar integrations available, too.
|
||||
|
||||
In real life, I attend a lot of meetings from the remotest regions of New Zealand, and Jitsi is easily the best video chat experience I've had yet. Don't waste half your meeting trying to find each other in a maze of virtual meeting rooms, or sitting through awkward lagtime, or struggling to install updates to your chat app. Just get Jitsi, using open source and standards-compliant webRTC protocols, and have a great meeting.
|
||||
|
||||
### Drawpile whiteboard
|
||||
|
||||
![Drawpile screenshot][4]
|
||||
|
||||
Sometimes it's easiest to explain things, or to track ideas, or just hash out crazy ideas, on a whiteboard. While whiteboards are staples of office conference rooms, they're harder to come by in the digital world. Luckily, there's [Drawpile][5], the real-time collaborative drawing application. You can host drawing sessions on your own computer and invite other users, or you can host a session on Drawpile's servers.
|
||||
|
||||
It's easy to use—minimal enough to be intuitive, but powerful enough to make it a viable artistic application in the event that your rough ideas start to develop into something important.
|
||||
|
||||
### Kanban board for project management
|
||||
|
||||
![Taiga screenshot][6]
|
||||
|
||||
Trying to stay organized and synchronized with your department? You should try [Taiga][7], a virtual "post-it note" board to help teams keep track of individual tasks. This method of organization and project planning is called kanban and is popular in software development, but it's a popular method for planning everything from holidays to home improvement projects.
|
||||
|
||||
The advantage of Taiga is that it's an online shared space. Anyone you collaborate or work with can keep tasks on the board, and as each person makes progress, they move their tasks from the left column (the starting line) to the right (the finish line). Taiga is pleasantly graphical and interactive, and there's nothing quite as satisfying as dragging-and-dropping tasks from one column to the next.
|
||||
|
||||
If your team has specific needs that Taiga doesn't meet, then you should take a look at [our pick of the best open source Kanban boards][8].
|
||||
|
||||
### Joplin personal notes
|
||||
|
||||
![Joplin][9]
|
||||
|
||||
|
||||
|
||||
I keep a paper notebook at my desk so I can jot down thoughts or ideas. Capturing the feel and convenience of this simple act is tricky, but Joplin comes close.
|
||||
|
||||
You can create virtual notebooks within Joplin, and each notebook can have any number of entries. The entries can be simple text, or they can be complex, dynamic documents with graphics, a to-do list, hyperlinks, and much more. Best of all, you can synchronize Joplin to all kinds of online storage services, including the open source Nextcloud service, so that your notebooks are available to you on any computer and any device. It's a great way to keep your workday organized, your mind focused, and your activities on track.
|
||||
|
||||
If you Joplin doesn't quite meet your requirements, take a look at some of our favorite [notebook applications][10].
|
||||
|
||||
### Riot team chat
|
||||
|
||||
![Riot screenshot][11]
|
||||
|
||||
Not everything requires a video chat or a voice call, and yet some things are more urgent than an email. That's where team chat comes into play. A good group chat application has all the features: instant messaging, emoji support, GIF and image support, on-demand chat rooms or "channels," widespread compatibility, and privacy. [Matrix][12] is an open standard and lightweight protocol for real-time communication, and if you run into problems typing your messages, you can switch over to VOIP quickly using the same protocol. You get the best of all worlds.
|
||||
|
||||
Matrix is the protocol, and there are many applications that hook into it (the same way that there's an Internet protocol, with Firefox being an application that makes it accessible to humans). One of the most popular clients is [Riot.im][13]. You can download Riot for your computer and your mobile, and in a pinch, you can just connect to it through a web browser. Your team will always be close at hand, but never so close that it gets uncomfortable.
|
||||
|
||||
### Etherpad shared documents
|
||||
|
||||
![Etherpad screenshot][14]
|
||||
|
||||
If you're looking to collaborate on a document or work on meeting notes with someone, you need look no further than Etherpad. Etherpad is a real-time shared word processor. Invite one or more people to a document, and watch as you each make your additions and edits. It's a fast and efficient way to get ideas down on "paper" and to iterate on revisions together.
|
||||
|
||||
There are a few ways to use Etherpad. If you have good IT support, you can ask your IT department to host an instance of Etherpad for your organization. Otherwise, there are public instances online from open source supporters such as [Riseup][15] and [Etherpad][16] itself.
|
||||
|
||||
### Ethercalc shared spreadsheets
|
||||
|
||||
![Ethercalc screenshot][17]
|
||||
|
||||
Similar to Etherpad, the online [Ethercalc][18] editor lets multiple users work on a spreadsheet, at the same time, on the same screen, remotely. Ethercalc can even import data from existing spreadsheets and delimited text files. You may or may not lose most of your formatting, depending on the complexity of what you're importing, but I've never had my data get munged, so importing has always been a good start. The next time you need help on a complex formula, or you need receipts entered into the latest budget, or you just need someone's input on layout, take it to Ethercalc.
|
||||
|
||||
### Nextcloud shared storage and calendar
|
||||
|
||||
![Nextcloud screenshot][19]
|
||||
|
||||
[Nextcloud][20] is a humble giant of an application. As its name implies, it's your own personal cloud. Its most obvious entry point is as online shared storage that syncs itself with a folder on your desktop and mobile device. You put files in, the files get uploaded to your storage space, and then they appear on all of your devices because everything's synchronized. Give everyone in your organization an account, and suddenly you have shared storage space with the ability to point-and-click to share files and folders with or without passwords.
|
||||
|
||||
But there's so much more to Nextcloud than just acting as a dropbox for shared data. Thanks to its plug-in structure, there are countless web apps you can install into Nextcloud, like chat clients, email clients, video chat, and much more. Not all plug-ins are "official," so support varies, but there are several official plug-ins that are very good. Notably, there's an official calendaring app, so you and your colleagues can schedule meetings and keep track of important upcoming events. The calendar uses the CalDAV protocol, so everything you do is compatible with any CalDAV client.
|
||||
|
||||
### LibreOffice
|
||||
|
||||
![LibreOffice screenshot][21]
|
||||
|
||||
If you're used to working in an office all day every day, you may also be used to working in an office suite all day. There's something comforting about an all-inclusive application with all the usual bells and whistles, and that application in the open source office world is [LibreOffice][22]. It's got everything you'd expect from an office suite: a word processor, spreadsheet, and slide presentation. It also has more than might expect, such as a vector-based drawing application that can also edit PDF files, and a relational database complete with a graphical interface builder. If you're looking for a good office application, LibreOffice is where you need to look first, because you'll look no further once you do.
|
||||
|
||||
### Linux
|
||||
|
||||
![][23]
|
||||
|
||||
If you're new to remote work, then you might be undergoing a major upheaval for one reason or another. A time of change, for some, is a great impetus to go for broke and change everything all in one go. If you're one of those people, then it might be time for a change of your whole operating system. Windows and Mac may have served you well in the past, but if you're looking to make the switch from non-open software to open source, why not change the platform upon which all those apps run?
|
||||
|
||||
There are many excellent Linux distributions built for serious work, serious autonomy, and serious advancement of skill. Grab a copy of Linux, whether it's [Fedora][24], [Elementary][25], or a long-term support subscription of [Red Hat Enterprise Linux][26], and give a free and open source OS a try. By the time you get comfortable with life as a remotee, you'll be a Linux pro at last!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/3/open-source-working-home
|
||||
|
||||
作者:[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/oatmeal-and-fedora.jpg?itok=NBFUH9eF (Oatmeal and a laptop.)
|
||||
[2]: https://opensource.com/sites/default/files/uploads/jitsi_0.jpg (Jitsi screenshot)
|
||||
[3]: http://meet.jit.si
|
||||
[4]: https://opensource.com/sites/default/files/uploads/drawpile-whiteboard.jpg (Drawpile screenshot)
|
||||
[5]: https://drawpile.net/
|
||||
[6]: https://opensource.com/sites/default/files/uploads/taiga_kanban_screen_0.jpg (Taiga screenshot)
|
||||
[7]: http://taiga.io
|
||||
[8]: https://opensource.com/alternatives/trello
|
||||
[9]: https://opensource.com/sites/default/files/joplin_0.png (Joplin)
|
||||
[10]: https://opensource.com/alternatives/evernote
|
||||
[11]: https://opensource.com/sites/default/files/uploads/riot-matrix.jpg (Riot screenshot)
|
||||
[12]: http://matrix.org
|
||||
[13]: http://riot.im
|
||||
[14]: https://opensource.com/sites/default/files/uploads/etherpad.jpg (Etherpad screenshot)
|
||||
[15]: https://pad.riseup.net/
|
||||
[16]: https://beta.etherpad.org
|
||||
[17]: https://opensource.com/sites/default/files/uploads/ethercalc.jpg (Ethercalc screenshot)
|
||||
[18]: https://ethercalc.org
|
||||
[19]: https://opensource.com/sites/default/files/uploads/nextcloud-calendar.jpg (Nextcloud screenshot)
|
||||
[20]: http://nextcloud.com
|
||||
[21]: https://opensource.com/sites/default/files/uploads/libreoffice.png (LibreOffice screenshot)
|
||||
[22]: http://libreoffice.org
|
||||
[23]: https://opensource.com/sites/default/files/uploads/advent-pantheon.jpg
|
||||
[24]: https://getfedora.org/
|
||||
[25]: https://elementary.io
|
||||
[26]: https://www.redhat.com/en/store/red-hat-enterprise-linux-workstation
|
@ -0,0 +1,106 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to Install Netbeans on Ubuntu and Other Linux)
|
||||
[#]: via: (https://itsfoss.com/install-netbeans-ubuntu/)
|
||||
[#]: author: (Community https://itsfoss.com/author/itsfoss/)
|
||||
|
||||
如何在 Ubuntu 和其他 Linux 上安装 Netbeans
|
||||
======
|
||||
|
||||
_**在本教程中,你将学习在 Ubuntu 和其他 Linux 发行版上安装 Netbeans IDE 的各种方法。**_
|
||||
|
||||
[NetBeans][1] 是一个开源集成开发环境,具有良好的跨平台支持。此工具已被 Java 和 C/C++ 开发社区广泛认可。
|
||||
|
||||
开发环境相当灵活。你可以配置它以支持各种开发。实际上,你可以开发 Web、桌面和移动应用,而无需离开此平台。这太神奇了,不是吗?除此之外,用户可以添加许多已知语言,如 [PHP][2]、C、C++、HTML、[Ajax][3]、JavaScript、JSP、Ruby on Rails 等。
|
||||
|
||||
如果你正在了解 Linux 上安装 Netbeans,那么有几种方法可以做到。我编写本教程主要是为了 Ubuntu,但一些安装方法也适用于其他发行版。
|
||||
|
||||
* [使用 apt 在 Ubuntu 上安装 Netbeans][4]:适用于 Ubuntu 和基于 Ubuntu 的发行版,但通常**它是旧版的 Netbeans**
|
||||
* [使用 Snap 在 Ubuntu 上安装 Netbeans][5]:适用于已启用 Snap 包支持的任何 Linux 发行版
|
||||
* [使用 Flatpak 安装 Netbeans] [6]:适用于所有支持 Flatpak 包的 Linux 发行版
|
||||
|
||||
|
||||
|
||||
### 使用 Apt 包管理器在 Ubuntu 上安装 Netbeans IDE
|
||||
|
||||
如果在 Ubuntu 软件中心搜索 Netbeans,你将找到两个版本的 Netbeans。Apache Netbeans 是 snap 版本,大小较大,但提供了最新的 Netbeans。
|
||||
|
||||
只需单击一下即可安装它。无需打开终端。是最简单的方法。
|
||||
|
||||
![Apache Netbeans in Ubuntu Software Center][7]
|
||||
|
||||
你也可以选择使用 apt 命令,但使用 apt 时,你无法获得最新的 Netbeans。例如,在编写本教程时,Ubuntu 18.04 中 Apt 提供 Netbeans 10,而 Snap 有最新的 Netbeans 11。
|
||||
|
||||
如果你是 [apt 或 apt-get][8] 的粉丝,那么可以[启用 universe 仓库][9],并在终端中使用此命令安装 Netbeans:
|
||||
|
||||
```
|
||||
sudo apt install netbeans
|
||||
```
|
||||
|
||||
### 使用 Snap 在任何 Linux 发行版上安装 Netbeans IDE
|
||||
|
||||
![][10]
|
||||
|
||||
Snap 是通用包管理器,如果[发行版上启用了 Snap][11],那么可以使用以下命令安装它:
|
||||
|
||||
```
|
||||
sudo snap install netbeans --classic
|
||||
```
|
||||
|
||||
此过程可能需要一些时间才能完成,因为总下载大小约为 1 GB。完成后,你将在应用程序启动器中看到它。
|
||||
|
||||
你不仅可以通过 Snap 获取最新的 Netbeans,已安装的版本将自动更新到较新版本。
|
||||
|
||||
### 使用 Flatpak 安装 Netbeans
|
||||
|
||||
[Flatpak][12] 是另一个如 Snap 的包安装器。默认情况下,某些发行版支持 Flatpak,在其他发行版上你可以[启用 Flatpak 支持][13]。
|
||||
|
||||
发行版支持 Flatpak 后,你可以使用以下命令安装 Netbeans:
|
||||
|
||||
```
|
||||
flatpak install flathub org.apache.netbeans
|
||||
```
|
||||
|
||||
另外,你可以下载源码并自己编译。
|
||||
|
||||
[下载 Netbeans][14]
|
||||
|
||||
希望你使用了上面其中一个方法在你的 Ubuntu 上安装了 Netbeans。但你使用的是哪个方法?有遇到问题么?让我们知道。
|
||||
|
||||
![][15]
|
||||
|
||||
### Srimanta Koley
|
||||
|
||||
Srimanta 是一位充满激情的作家,一位 Distrohopper 和开源爱好者。他非常喜欢与技术有关的一切。他喜欢读书,并对 90 年代的书很痴迷!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-netbeans-ubuntu/
|
||||
|
||||
作者:[Community][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/itsfoss/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://netbeans.org/
|
||||
[2]: https://www.php.net/
|
||||
[3]: https://en.wikipedia.org/wiki/Ajax_(programming)
|
||||
[4]: tmp.ZNFNEC210y#apt
|
||||
[5]: tmp.ZNFNEC210y#snap
|
||||
[6]: tmp.ZNFNEC210y#flatpak
|
||||
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/apache-netbeans-ubuntu-software-center.jpg?ssl=1
|
||||
[8]: https://itsfoss.com/apt-vs-apt-get-difference/
|
||||
[9]: https://itsfoss.com/ubuntu-repositories/
|
||||
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/Install_Netbeans_Linux.jpg?ssl=1
|
||||
[11]: https://itsfoss.com/install-snap-linux/
|
||||
[12]: https://flatpak.org/
|
||||
[13]: https://itsfoss.com/flatpak-guide/
|
||||
[14]: https://netbeans.apache.org/download/index.html
|
||||
[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/srimanta.jpg?ssl=1
|
Loading…
Reference in New Issue
Block a user