2021年7月

下载我们的免费指南之一:开发一个基于 Python 的电子游戏;使用开源工具来让你的生活井井有条;完成家庭自动化项目;或尝试你的树莓派家用实验室。

 title=

(LCTT 译注:opensource.com 的免费电子书需要免费注册一个用户才能下载。)

开启一个新的树莓派项目

近十年来,树莓派一直俘获着开源爱好者的心和手。你可以用树莓派做无数的项目,无论是 监控你的花园设置家长监控(尤其是在那些漫长的夏天),甚至从你自己的后院 跟踪飞机。如果这些很酷的项目激起了你的兴趣,但你的树莓派仍在吃灰,那么你需要下载我们的指南来促使你开始行动。在你知道它之前,你需要学习 如何管理它们,因为你将与很多树莓派一起工作!

下载:《如何开始使用你的树莓派

设计你的开源智能家庭

一个聪明且有用的方式去使用树莓派的方式是去设计你的智能家庭。使用家庭助手或其他的开源工具,你的家可以按你自己的设置进行自动化而无需借助第三方平台。作者 Steve Ovens 用这本家庭自动化集锦的手写电子书来指导你的每一步工作。

下载:《使用开源工具实现家庭自动化的实用指南

将事情梳理地井井有条

可能你并没做好准备使得你的家庭完全自动化,但是你可能会对梳理你的思维有兴趣。为什么不从你的 to-do 列表开始呢?在贡献者 Kevin Sonney 的生产力指导下,你将会熟悉六个开源工具的使用,从而帮你把事情安排得井井有条。一旦你完成了他的教程,你就会感到事情井井有条,在这个夏天终于有时间放松了。

下载:《六个可以将事情梳理地井井有条的开源工具

学习如何写代码

电脑无处不在。能吐槽一下很多编程语言对初学者不是很友好吗?

有许多为初学者设计的编程语言。Bash 是 Linux 和 macOS 终端中使用的相同的脚本语言,如果你新开始写代码,Bash 将会是一个伟大的开始。你可以以 互动的方式学习它,之后下载我们的电子书以了解更多。

下载:《Bash 编程指南

用 Python 写一个游戏

另一个初学者喜欢的编程语言是 Python。它不仅受到仅仅学习编码的中小学生的欢迎,还被专业程序员用来做 网站开发视频编辑 以及 云端自动化。无论你最终的目标是什么,开始学习 Python 的一个有趣的方式是编写一个自己的游戏。

下载:《Python 游戏开发指南

发现使用 Jpuyter 的巧妙方法

为了让 Python 具有交互性且易于分享,Jupyter 项目提供了基于 Web 的发展环境。你可以在“笔记本”文件中写代码,然后将其发送给其他用户,以便他们轻松复制和可视化你所做的。它是代码、文档和演示文稿的完美组合,而且非常灵活。下载 Moshe Zadka 的多方面指南了解更多关于 Jupyter。

下载:《使用 Jupyer 的六种惊艳方式

在你的家庭实验室里尝试 Kubernetes

现在,你已经在你的树莓派上安装了 Linux,已经登录,已设置新用户并 配置了 sudo 使得能够进入管理员模式,你正在 运行所有你需要的服务 。之后呢?

如果你对 Linux 和服务器管理感到满意,你的下一步可能是云服务。可以读一下 Chris Collins 的电子书,从你的家庭实验室的舒适中了解所有关于容器,吊舱和集群的信息。

下载: 《在你的树莓派家庭实验室上运行 Kubernetes

福利:书籍列表

只工作不休息是不健康的。夏天(或任何季节,它是在你的世界的一部分)假期是为了休息,没有什么比坐在门廊或海滩上读一本好书更休闲人心的。下面是一些最近列出的书,以激发一些想法:


via: https://opensource.com/article/21/7/open-source-guides

作者:Seth Kenlon 选题:lujun9972 译者:zepoch 校对:wxy

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

SolarWinds 和 Kaseya 攻击动摇了对 SaaS 模式的信心

先是 SolarWinds,现在是 Kaseya。管理服务提供商(MSP)大量使用的 SaaS 软件现在已经成为两次成功的网络攻击的目标。大约 1500 家“下游”企业在他们自己的“上游”供应商被入侵后,现在 MSP 正在重新评估他们管理 IT 的方法。

许多 MSP 特别纠结的决定是,他们应该在多大程度上继续依赖可能被恶意软件破坏的 IT 服务管理平台,而不是建立和保护自己的定制平台。后一种方法对恶意软件没有免疫力,但由于网络犯罪分子越来越多地把精力集中在能够对下游造成更大破坏的平台上,因此可能不太容易成为目标。

这就和大规模云计算的副作用一样,这种成规模的云服务一旦出问题就是大问题。

针对 Kaseya 的巨大勒索软件攻击可能是完全可以避免的

据报道,Kaseya 公司的软件在 2018 年至 2019 年期间至少有两次被用来启动勒索软件,而它并没有对其安全策略进行重大反思。

前 Kaseya 员工在接受采访时称,他们在 2017 年至 2020 年期间多次警告高管 Kaseya 产品的严重安全缺陷,但该公司并没有真正解决这些问题。该公司使用的是旧代码,实施的是差劲的加密,甚至没有对软件进行常规修补。甚至一名员工声称,他在向高管发送了一份长达 40 页的安全问题简报两周后被解雇。

如果因此发生的勒索可以向软件供应商索赔,那我想他们可能就会重视了。

Tor 项目希望用 Rust 取代 C 代码

ZOMG 周二宣布,它将向注重隐私的 Tor 项目提供 67 万美元的资助,以继续开发 Arti,这是一个 Tor 客户端的 Rust 语言实现,它将更可靠、更安全,并且更容易被其他软件使用。Tor 项目联合创始人,“根据我们的非正式审计,自 2016 年以来,Tor 大约有一半的安全问题在 Rust 中是不可能出现的,其他许多问题的可能性也会小很多。”

我们已经看到很多传统的 C 语言开发的项目和软件正在或已经迁移到 Rust 了。

即使你用的是诸如 Gmail 的托管邮件服务,你也可以通过 Mutt 在终端里收发电子邮件。

 title=

我喜欢在 Linux 终端上读写电子邮件的便捷,因此我是 Mutt 这个轻量简洁的电子邮件客户端的忠实用户。对于电子邮件服务来说,不同的系统配置和网络接入并不会造成什么影响。这个客户端通常隐藏在我 Linux 终端的 某个标签页或者某个终端复用器的面板 上,需要用的时候随时可以调出来,不需要使用的时候放到后台,就不需要在桌面上一直放置一个电子邮件客户端的应用程序。

当今我们大多数人使用的都是托管电子邮件账号,在这种使用场景中并不会与电子邮件协议发生过多的直接交互。而 Mutt(以及更早的 ELM)是在更简单的时代创建的,那时候检查邮件只是对 uucp 的调用,以及对 /var/mail 的读取。当然 Mutt 也很与时俱进,随着各种流行的协议(如 POP、IMAP、LDAP)出现,它都实现了良好的支持。因此,即使我们使用的是 Gmail 这种邮件服务,也可以与 Mutt 无缝衔接。

如今在大多数情况下,用户都不会拥有自己的电子邮件服务器,大部分用户都会选择 Gmail,因此下文会以 Mutt + Gmail 为例作介绍。如果你比较注重电子邮件隐私,不妨考虑 ProtonMail 或者 Tutanota,它们都提供完全加密的电子邮件服务。其中 Tutanota 包含很多 开源组件,而 ProtonMail 则为付费用户提供 IMAP 桥接,简化了在非浏览器环境下的邮件访问。不过,很多公司、学校和组织都没有自己的电子邮件服务,而是使用 Gmail 提供的邮件服务,这样一来,大部分用户都会有一个 Gmail 邮箱。

当然,如果你自己就 拥有电子邮件服务器,那么使用 Mutt 就更简单了。下面我们开始介绍。

安装 Mutt

在 Linux 系统上,一般可以直接从发行版提供的软件库中安装 Mutt,另外需要在家目录中创建一个 .mutt 目录以存放配置文件:

$ sudo dnf install mutt
$ mkdir ~/.mutt

在 MacOS 上,可以通过 MacPorts 或者 Homebrew 安装;在 Windows 上则可以使用 Chocolatey 安装。

Mutt 是一个 邮件用户代理 Mail User Agent (MUA),因此它的作用是读取、编写以及向外部邮件池发送邮件。向邮件服务器实际传输邮件是其它应用或邮件服务的工作,尽管它们可以和 Mutt 进行协作,让我们看起来是 Mutt 完成了所有功能,但实际上并非如此。在弄懂了两者之间的区别之后,我们会对 Mutt 的配置更加清楚。

这也是为什么除了 Mutt 之外,我们还需要视乎进行通信的服务种类选择一些辅助应用程序。在本文中我使用的是 IMAP 服务,这可以让我本地的电子邮件副本与电子邮件服务提供商的远程邮件副本保持同步。如果你选择 POP 服务,配置的难度就更下一个台阶了,也无需依赖其它外部工具。我们需要 OfflineIMAP 这个 Python 应用程序来实现 IMAP 的集成,这个应用程序可以在 它的 GitHub 存储库 获取。

OfflineIMAP 目前仍然在从 Python 2 移植到 Python 3,目前需要手动安装,但以后你也可以通过 python3 -m pip 命令进行安装。

OfflineIMAP 依赖于 imaplib2 库,这个库也在努力开发当中,所以我更喜欢手动安装。同样地,也是通过 Git 将代码库克隆到本地,进入目录后使用 pip 安装。

首先安装 rfc6555 依赖:

$ python3 -m pip install --user rfc6555

然后从源码安装 imaplib2

$ git clone [email protected]:jazzband/imaplib2.git
$ pushd imaplib2.git
$ python3 -m pip install --upgrade --user .
$ popd

最后从源码安装 OfflineIMAP:

$ git clone [email protected]:OfflineIMAP/offlineimap3.git
$ pushd offlineimap3.git
$ python3 -m pip install --upgrade --user .
$ popd

如果你使用的是 Windows 上的 Cygwin,那么你还需要安装 Portlocker

配置 OfflineIMAP

OfflineIMAP 默认使用 ~/.offlineimaprc 这个配置文件,在它的代码库中会有一个名为 offlineimap.conf 的配置模板,可以直接将其移动到家目录下:

$ mv offlineimap3.git/offlineimap.conf ~/.offlineimaprc`

你可以使用任何文本编辑器打开浏览这个配置文件,它的注释很完善,便于了解各个可用的配置项。

以下是我的 .offlineimaprc 配置文件,为了清晰起见,我把其中的注释去掉了。对于你来说其中有些配置项的值可能会略有不同,但或许会为你的配置带来一些启发:

[general]
ui = ttyui
accounts = %your-gmail-username%
pythonfile = ~/.mutt/password_prompt.py
fsync = False

[Account %your-gmail-username%]
localrepository = %your-gmail-username%-Local
remoterepository = %your-gmail-username%-Remote
status_backend = sqlite
postsynchook = notmuch new

[Repository %your-gmail-username%-Local]
type = Maildir
localfolders = ~/.mail/%your-gmail-username%-gmail.com
nametrans = lambda folder: {'drafts':  '[Gmail]/Drafts',
                            'sent':    '[Gmail]/Sent Mail',
                            'flagged': '[Gmail]/Starred',
                            'trash':   '[Gmail]/Trash',
                            'archive': '[Gmail]/All Mail',
                            }.get(folder, folder)

[Repository %your-gmail-username%-Remote]
maxconnections = 1
type = Gmail
remoteuser = %your-gmail-username%@gmail.com
remotepasseval = '%your-gmail-API-password%'
## remotepasseval = get_api_pass()
sslcacertfile = /etc/ssl/certs/ca-bundle.crt
realdelete = no
nametrans = lambda folder: {'[Gmail]/Drafts':    'drafts',
                            '[Gmail]/Sent Mail': 'sent',
                            '[Gmail]/Starred':   'flagged',
                            '[Gmail]/Trash':     'trash',
                            '[Gmail]/All Mail':  'archive',
                            }.get(folder, folder)
folderfilter = lambda folder: folder not in ['[Gmail]/Trash',
                                             '[Gmail]/Important',
                                             '[Gmail]/Spam',
                                             ]

配置文件里有两个可以替换的值,分别是 %your-gmail-username%%your-gmail-API-password%。其中第一个值需要替换为 Gmail 用户名,也就是邮件地址中 @gmail.com 左边的部分。而第二个值则需要通过双因素身份验证(2FA)后从 Google 获取(即使你在查收邮件时不需要使用 2FA)。

为 Gmail 设置双因素身份验证(2FA)

Google 希望用户通过 Gmail 网站收发电子邮件,因此当你在 Gmail 网站以外操作电子邮件时,实际上是被 Google 作为“开发者”看待(尽管你没有进行任何开发工作)。也就是说,Google 会认为你正在创建一个应用程序。要获得开发者层面的应用程序密码,就必须设置双因素身份验证。完成了这个过程以后,就可以获得一个应用程序密码,Mutt 可以通过这个密码在浏览器以外的环境登录到你的电子邮箱中。

为了安全起见,你还可以在 Google 的 账号安全 页面中添加一个用于找回的电子邮件地址。

在账号安全页面中,点击“ 两步验证 2-step Verification ”开始设置 2FA,设置过程中需要用到一部手机。

激活 2FA 之后,账号安全页面中会出现“ 应用程序密码 App Passwords ”选项,点击就可以为 Mutt 创建一个新的应用程序密码。在 Google 生成密码之后,将其替换 .offlineimaprc 配置文件中的 %your-gmail-API-password% 值。

直接将应用程序密码记录在 .offlineimaprc 文件中,这种以纯文本形式存储的做法有一定的风险。长期以来我都是这样做的,而且感觉良好,因为我的家目录是加密的。但出于安全考虑,我现在已经改为使用 GnuPG 加密应用程序密码,这部分内容不在本文的讨论范围,关于如何设置 GPG 密码集成,可以参考我的 另一篇文章

在 Gmail 启用 IMAP

在你永远告别 Gmail 网页界面之前,还有最后一件事:你必须启用 Gmail 账户的 IMAP 访问。

在 Gmail 网站页面中,点击右上角的“cog”图标,选择“ 查看所有设置 See all settings ”。在 Gmail 设置页面中,点击“POP/IMAP”标签页,并选中“ 启用 IMAP enable IMAP ”,然后保存设置。

现在就可以在浏览器以外访问你的 Gmail 电子邮件了。

配置 Mutt

Mutt 的配置过程相对简单。和 .bashrc.zshrc.emacs 这些配置文件一样,网络上有很多优秀的 .muttrc 配置文件可供参照。我自己的 .muttrc 配置文件则借鉴了 Kyle RankinPaul Frields 等人的配置项和想法。下面列出我的配置文件的一些要点:

set ssl_starttls=yes
set ssl_force_tls=yes

set from='[email protected]'
set realname='Tux Example'

set folder = imaps://imap.gmail.com/
set spoolfile = imaps://imap.gmail.com/INBOX
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set smtp_url="smtp://smtp.gmail.com:25"
set move = no
set imap_keepalive = 900
set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"

# Paths
set folder           = ~/.mail
set alias_file       = ~/.mutt/alias
set header_cache     = "~/.mutt/cache/headers"
set message_cachedir = "~/.mutt/cache/bodies"
set certificate_file = ~/.mutt/certificates
set mailcap_path     = ~/.mutt/mailcap
set tmpdir           = ~/.mutt/temp
set signature        = ~/.mutt/sig
set sig_on_top       = yes

# Basic Options
set wait_key = no
set mbox_type = Maildir
unset move               # gmail does that

# Sidebar Patch
set sidebar_visible = yes
set sidebar_width   = 16
color sidebar_new color221 color233

## Account Settings
# Default inbox
set spoolfile = "+example.com/INBOX"

# Mailboxes to show in the sidebar.
mailboxes +INBOX \
          +sent \
          +drafts

# Other special folder
set postponed = "+example.com/drafts"

# navigation
macro index gi "<change-folder>=example.com/INBOX<enter>" "Go to inbox"
macro index gt "<change-folder>=example.com/sent" "View sent"

整个配置文件基本是开箱即用的,只需要将其中的 Tux Exampleexample.com 替换为你的实际值,并将其保存为 ~/.mutt/muttrc 就可以使用了。

启动 Mutt

在启动 Mutt 之前,需要先启动 offlineimap 将远程邮件服务器上的邮件同步到本地。在首次启动的时候耗时可能会比较长,只需要让它整晚运行直到同步完成就可以了。

在同步完成后,启动 Mutt:

$ mutt

Mutt 会提示你打开用于管理电子邮件的目录权限,并展示收件箱的视图。

 title=

学习使用 Mutt

在学习使用 Mutt 的过程中,你可以找到最符合你使用习惯的 .muttrc 配置。例如我的 .muttrc 配置文件集成了使用 Emacs 编写邮件、使用 LDAP 搜索联系人、使用 GnuPG 对邮件进行加解密、链接获取、HTML 视图等等一系列功能。你可以让 Mutt 做到任何你想让它做到的事情,你越探索,就能发现越多。


via: https://opensource.com/article/21/7/gmail-linux-terminal

作者:Seth Kenlon 选题:lujun9972 译者:HankChow 校对:wxy

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

Zlib 是一个用于数据压缩的开源库。

作为使用者,你可能会遇到需要安装 zlib(或 zlib-devel 包)作为另一个应用程序的依赖项的情况。

但问题来了,如果你尝试在 Ubuntu 上安装 zlib,它会抛出 “unable to locate package zlib” 错误。

sudo apt install zlib
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package zlib

为什么会看到这个 Ubable to locate package 错误呢?因为没有名为 zlib 的包。

如果你 使用 apt search 命令,你会发现有几个包可以让你安装:zlib 1g 和 zlib 1g-dev。当你知道这些后,只需一个 apt 命令就可以安装它们。

在基于 Ubuntu 的 Linux 发行版上安装 Zlib

打开终端,使用以下命令:

sudo apt install zlib1g

请记住 g 前面的字母是数字 1,而不是小写的字母 L。很多人在输入命令时都会犯这个错误。

另一个包,zlib 1g-dev 是开发包。只有在你需要时才安装它,否则你应该使用 zlib 1g 包。

sudo apt install zlib1g-dev

你也可以 Zlib 网站 下载源代码并安装它。但是,除非你有充分的理由,否则我不推荐使用源代码方式来安装 zlib。例如,如果你需要最新或特定版本的 zlib,但该版本在发行版的仓库中不可用。

有趣的是,像安装 zlib 这样看似很小的东西可能会变得很麻烦,有两个原因:一个是不同的包名;另一个是包含“隐藏”数字 1,它与小写 L 混淆了。

我希望这个快速提示能帮助到你。随意在评论部分留下你的问题、建议或简单的一句 “thank you”。


via: https://itsfoss.com/install-zlib-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:MjSeven 校对:wxy

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

乌克兰从加密货币矿场查封了 3800 台索尼 PS4 主机

乌克兰安全局查封了某地的一个大型非法加密货币挖矿矿场,然而,他们在本次执法行动中除了查获到 500 张以上的显卡外,还查获了 3800 台 PS4 游戏机!

因为初代 PS4 集成了具有 18 个计算单元的 GPU,单精度算力在 1.84 TFLOPs 左右;升级后的 PS4 Pro 机型则集成了具有 36 个计算单元的 GPU,算力也提升到了 4.2 TFLOPs 。

不只是对显卡下手了,连游戏机都不放过。

开发人员终于从 Java 8 转向 Java 11

以前对 Java 社区的报告发现,开发人员仍然主要使用 Java 8。但根据 Snyk 的《2021 年 JVM 生态系统报告》,今年 61.5% 的受访者在部分生产环境中使用 Java 11,近 12% 的人在使用最新的版本 Java 15。然而,一半的 Java 11 用户仍然在他们的生产环境中使用 Java 8。此外,44% 的开发者在生产中使用免费的 AdoptOpenJDK 发行版作为他们的 JDK 之一,48% 在开发中使用。

虽然逐步迁移到最新版本了,但是由于运行旧版本 JDK 上的老应用,开发人员还是难以放弃和迁移。

广告商花了更多的钱来锁定安卓用户

今年 4 月初,苹果公司开始强制要求“应用跟踪透明度”,这让用户可以选择是否可以跨应用程序跟踪。现在,一些广告公司报告说 iOS 的支出降低了,但 Android 的广告支出却增加了 10% 以上。有趣的是,只有大约 66% 的用户真正拒绝了追踪。

好吧,那就追踪安卓吧,反正谷歌是一家广告公司。

Tealder 是 Rust 版本的 tldr,对常用的命令提供了易于理解的说明信息。

 title=

手册页是我开始探索 Linux 时最常用的资源。当然,对于初学者熟悉命令行指令而言,man 是最频繁使用的指令。但是手册页中有大量的选项和参数列表,很难被解读,这使得你很难理解你想知道的东西。如果你想要一个更简单的解决方案,有基于例子的输出,我认为 tldr 太长不读 too long dnot's read )是最好的选择。

Tealdeer 是什么?

Tealdeer 是 tldr 的一个基于 Rust 的实现。它是一个社区驱动的手册页,给出了非常简单的命令工作原理的例子。Tealdeer 最棒的地方在于它几乎包含了所有你通常会用到的命令。

安装 Tealdeer

在 Linux 系统,你可以从软件仓库安装 Tealdeer,比如在 Fedora 上:

$ sudo dnf install tealdeer

在 macOS 可以使用 MacPorts 或者 Homebrew。 同样,你可以使用 Rust 的 Cargo 包管理器来编译和安装此工具:

$ cargo install tealdeer

使用 Tealdeer

输入 tldr-list 返回 tldr 所支持的手册页,比如 touchtardnfdockerzcatzgrep 等:

$ tldr --list
2to3
7z
7za
7zr
[
a2disconf
a2dismod
a2dissite
a2enconf
a2enmod
a2ensite
a2query
[...]

使用 tldr 跟上具体的命令(比如 tar )能够显示基于示例的手册页,描述了你可以用该命令做的所有选项。

$ tldr tar

  Archiving utility.
  Often combined with a compression method, such as gzip or bzip2.
  More information: <https://www.gnu.org/software/tar>.

  [c]reate an archive and write it to a [f]ile:

      tar cf target.tar file1 file2 file3

  [c]reate a g[z]ipped archive and write it to a [f]ile:

      tar czf target.tar.gz file1 file2 file3

  [c]reate a g[z]ipped archive from a directory using relative paths:

      tar czf target.tar.gz --directory=path/to/directory .

  E[x]tract a (compressed) archive [f]ile into the current directory [v]erbosely:

      tar xvf source.tar[.gz|.bz2|.xz]

  E[x]tract a (compressed) archive [f]ile into the target directory:

      tar xf source.tar[.gz|.bz2|.xz] --directory=directory

  [c]reate a compressed archive and write it to a [f]ile, using [a]rchive suffix to determine the compression program:

      tar caf target.tar.xz file1 file2 file3

如需控制缓存:

$ tldr --update
$ tldr --clear-cache

你能够控制 Tealdeer 输出的颜色选项,有三种模式选择:一直、自动、从不。默认选项是自动,但我喜欢颜色提供的额外信息,所以我在我的 ~/.bashrc文件中增加了这个别名:

alias tldr='tldr --color always'

结论

Tealdeer 的美妙之处在于不需要网络连接就可以使用,只有更新缓存的时候才需要联网。因此,即使你处于离线状态,依然能够查找和学习你新学到的命令。更多信息,请查看该工具的 说明文档

你会使用 Tealdeer 么?或者你已经在使用了?欢迎留言让我们知道。


via: https://opensource.com/article/21/6/tealdeer-linux

作者:Sudeshna Sur 选题:lujun9972 译者:ddl-hust 校对:wxy

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