Quantcast
Channel: Linux 中国◆开源社区
Viewing all 9060 articles
Browse latest View live

让你的 Linux 远离黑客(三):FAQ

$
0
0

Computer security

Mike Guthrie 最近在 Linux 基金会的网络研讨会上回答了一些安全相关的问题。

这个系列的第一篇第二篇文章覆盖了 5 个让你的 Linux 远离黑客的最简单方法,并且知道他们是否已经进入。这一次,我将回答一些我最近在 Linux 基金会网络研讨会上收到的很好的安全性问题。

如果系统自动使用私钥认证,如何存储密钥密码?

这个很难。这是我们一直在斗争的事情,特别是我们在做 “Red Team” 的时候,因为我们有些需要自动调用的东西。我使用 Expect,但我倾向于在这上面使用老方法。你需要编写脚本,是的,将密码存储在系统上不是那么简单的一件事,当你这么做时你需要加密它。

我的 Expect 脚本加密了存储的密码,然后解密,发送密码,并在完成后重新加密。我知道到这有一些缺陷,但它比使用无密码的密钥更好。

如果你有一个无密码的密钥,并且你确实需要使用它。我建议你尽量限制需要用它的用户。例如,如果你正在进行一些自动日志传输或自动化软件安装,则只给那些需要执行这些功能的程序权限。

你可以通过 SSH 运行命令,所以不要给它们一个 shell,使它只能运行那个命令就行,这样就能防止某人窃取了这个密钥并做其他事情。

你对密码管理器如 KeePass2 怎么看?

对我而言,密码管理器是一个非常好的目标。随着 GPU 破解的出现和 EC2 的一些破解能力,这些东西很容易就变成过去时。我一直在窃取这些密码库。

现在,我们在破解这些库的成功率是另外一件事。我们差不多有 10% 左右的破解成功率。如果人们不能为他们的密码库用一个安全的密码,那么我们就会进入并会获得丰硕成果。比不用要强,但是你仍需要保护好这些资产。如你保护其他密码一样保护好密码库。

你认为从安全的角度来看,除了创建具有更高密钥长度的主机密钥之外,创建一个新的 “Diffie-Hellman” 模数并限制 2048 位或更高值得么?

值得的。以前在 SSH 产品中存在弱点,你可以做到解密数据包流。有了它,你可以传递各种数据。作为一种加密机制,人们不假思索使用这种方式来传输文件和密码。使用健壮的加密并且改变你的密钥是很重要的。 我会轮换我的 SSH 密钥 - 这不像我的密码那么频繁,但是我每年会轮换一次。是的,这是一个麻烦,但它让我安心。我建议尽可能地使你的加密技术健壮。

使用完全随机的英语单词(大概 10 万个)作为密码合适么?

当然。我的密码实际上是一个完整的短语。它是带标点符号和大小写一句话。除此以外,我不再使用其他任何东西。

我是一个“你可以记住而不用写下来或者放在密码库的密码”的大大的支持者。一个你可以记住不必写下来的密码比你需要写下来的密码更安全。

使用短语或使用你可以记住的四个随机单词比那些需要经过几次转换的一串数字和字符的字符串更安全。我目前的密码长度大约是 200 个字符。这是我可以快速打出来并且记住的。

在物联网情景下对保护基于 Linux 的嵌入式系统有什么建议么?

物联网是一个新的领域,它是系统和安全的前沿,日新月异。现在,我尽量都保持离线。我不喜欢人们把我的灯光和冰箱搞乱。我故意不去购买支持联网的冰箱,因为我有朋友是黑客,我可不想我每天早上醒来都会看到那些不雅图片。封住它,锁住它,隔离它。

目前物联网设备的恶意软件取决于默认密码和后门,所以只需要对你所使用的设备进行一些研究,并确保没有其他人可以默认访问。然后确保这些设备的管理接口受到防火墙或其他此类设备的良好保护。

你可以提一个可以在 SMB 和大型环境中使用的防火墙/UTM(OS 或应用程序)么?

我使用 pfSense,它是 BSD 的衍生产品。我很喜欢它。它有很多模块,实际上现在它有商业支持,这对于小企业来说这是非常棒的。对于更大的设备、更大的环境,这取决于你有哪些管理员。

我一直都是 CheckPoint 管理员,但是 Palo Alto 也越来越受欢迎了。这些设备与小型企业或家庭使用很不同。我在各种小型网络中都使用 pfSense。

云服务有什么内在问题么?

并没有云,那只不过是其他人的电脑而已。云服务存在内在的问题。只知道谁访问了你的数据,你在上面放了什么。要知道当你向 Amazon 或 Google 或 Microsoft 上传某些东西时,你将不再完全控制它,并且该数据的隐私是有问题的。

要获得 OSCP 你建议需要准备些什么?

我现在准备通过这个认证。我的整个团队是这样。阅读他们的材料。记住, OSCP 将成为令人反感的安全基准。你一切都要使用 Kali。如果不这样做 - 如果你决定不使用 Kali,请确保仿照 Kali 实例安装所有的工具。

这将是一个基于工具的重要认证。这是一个很好的方式。看看一些名为“渗透测试框架”的内容,因为这将为你提供一个很好的测试流程,他们的实验室似乎是很棒的。这与我家里的实验室非常相似。

随时免费观看完整的网络研讨会。查看这个系列的第一篇第二篇文章获得 5 个简单的贴士来让你的 Linux 机器安全。

Mike Guthrie 为能源部工作,负责 “Red Team” 的工作和渗透测试。


via: https://www.linux.com/news/webinar/2017/how-keep-hackers-out-your-linux-machine-part-3-your-questions-answered

作者:MIKE GUTHRIE 译者:geekpi 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8433-1.html?utm_source=rss&utm_medium=rss


使用 LXDE 的 8 个理由

$
0
0

考虑使用轻量级桌面环境 LXDE 作为你 Linux 桌面的理由

去年年底,升级到 Fedora 25 所装的新版本 KDE Plasma 给我带来了严重问题,让我难以完成任何工作。出于两个原因我决定尝试其它 Linux 桌面环境。第一,我需要完成我的工作。第二,一心使用 KDE 已经有很多年,我认为是时候尝试一些不同的桌面了。

我第一个尝试了几周的替代桌面是 Cinnamon,我在 1 月份介绍过它。这次我已经使用了 LXDE(轻量级 X11 桌面环境Lightweight X11 Desktop Environment)大概 6 周,我发现它有很多我喜欢的东西。这是我使用 LXDE 的 8 个理由。

1、 LXDE 支持多个面板

和 KDE 以及 Cinnamon 一样,LXDE 支持包括系统菜单、应用启动器的面板,以及显示正在运行应用图标的任务栏。我第一次登录到 LXDE 时,面板的配置看起来异常熟悉。LDXE 看起来已经根据我的 KDE 配置情况为我准备好了喜欢的顶部和底部面板,并包括了系统托盘设置。顶部面板上的应用程序启动器看似来自 Cinnamon 。面板上的东西使得启动和管理程序变得容易。默认情况下,只在桌面底部有一个面板。

打开了 Openbox Configuration Manager 的 LXDE 桌面。

打开了 Openbox 配置管理器的 LXDE 桌面。这个桌面还没有更改过,因此它使用了默认的颜色和图标主题。

2、 Openbox 配置管理器提供了一个用于管理和体验桌面外观的简单工具。

它为主题、窗口修饰、多个显示器的窗口行为、移动和调整窗口大小、鼠标控制、多桌面等提供了选项。虽然这看起来似乎很多,但它远不如配置 KDE 桌面那么复杂,尽管如此 Openbox 仍然提供了绝佳的效果。

3、 LXDE 有一个强大的菜单工具

桌面偏好Desktop Preference菜单的高级Advanced标签页有个有趣的选项。这个选项的名称是 “点击桌面时显示窗口管理器提供的菜单Show menus provided by window managers when desktop is clicked”。选中这个复选框,当你右击桌面时,会显示 Openbox 桌面菜单,而不是标准的 LXDE 桌面菜单。

Openbox 桌面菜单包括了几乎每个你可能想要的菜单选项,所有都可从桌面便捷访问。它包括了所有的应用程序菜单、系统管理、以及首选项。它甚至有一个菜单包括了所有已安装的终端模拟器应用程序的列表,因此系统管理员可以轻易地启动他们喜欢的终端。

4、 LXDE 桌面的设计干净简单

它没有任何会妨碍你完成工作的东西。尽管你可以添加一些文件、目录、应用程序的链接到桌面,但是没有可以添加到桌面的小部件。在我的 KDE 和 Cinnamon 桌面上我确实喜欢一些小部件,但它们很容易被覆盖住,然后我就需要移动或者最小化窗口,或者使用 “显示桌面Show Desktop” 按钮清空整个桌面才能看到它们。 LXDE 确实有一个 “图标化所有窗口Iconify all windows” 按钮,但我很少需要使用它,除非我想看我的壁纸。

5、 LXDE 有一个强大的文件管理器

LXDE 默认的文件管理器是 PCManFM,因此在我使用 LXDE 的时候它成为了我的文件管理器。PCManFM 非常灵活、可以配置为适用于大部分人和场景。它看起来没有我常用的文件管理器 Krusader 那么可配置,但我确实喜欢 Krusader 所没有的 PCManFM 侧边栏。

PCManFM 允许打开多个标签页,可以通过右击侧边栏的任何条目或者单击图标栏的新标签图标打开。PCManFM 窗口左边的位置Places面板显示了应用程序菜单,你可以从 PCManFM 启动应用程序。位置Places面板上面也显示了一个设备图标,可以用于查看你的物理存储设备,一系列带按钮的可移除设备允许你挂载和卸载它们,还有可以便捷访问的主目录、桌面、回收站。位置Places面板的底部包括一些默认目录的快捷方式,例如 Documents、Music、Pictures、Videos 以及 Downloads。你也可以拖拽其它目录到位置Places面板的快捷方式部分。位置Places 面板可以换为正常的目录树。

6、 如果在现有窗口后面打开,新窗口的标题栏会闪烁

这是一个在大量现有窗口中定位新窗口的好方法。

7、 大部分现代桌面环境允许多个桌面,LXDE 也不例外

我喜欢使用一个桌面用于我的开发、测试以及编辑工作,另一个桌面用于普通任务,例如电子邮件和网页浏览。LXDE 默认提供两个桌面,但你可以配置为只有一个或者多个。右击桌面切换器Desktop Pager配置它。

通过一些有害但不是破坏性的测试,我发现最大允许桌面数目是 100。我还发现当我把桌面数目减少到低于我实际已经在使用的 3 个时,不活动桌面上的窗口会被移动到桌面 1。多么有趣的发现!

8、 Xfce 电源管理器是一个小巧但强大的应用程序,它允许你配置电源管理如何工作

它提供了一个标签页用于通用配置,以及用于系统、显示和设备的标签页。设备标签页显示了我系统上已有设备的表格,例如电池供电的鼠标、键盘,甚至我的 UPS(不间断电源)。它显示了每个设备的详细信息,包括厂商和系列号,如果可用的话,还有电池充电状态。当我写这篇博客的时候,我 UPS 的电量是 100%,而我罗技鼠标的电量是 75%。 Xfce 电源管理器还在系统托盘显示了一个图标,因此你可以从那里快速了解你设备的电池状态。

关于 LXDE 桌面还有很多喜欢的东西,但这些就是抓住了我的注意力,它们也是对我使用现代图形用户界面工作非常重要、不可或缺的东西。

我注意到奇怪的一点是,我一直没有弄明白桌面(Openbox)菜单的 “重新配置Reconfigure” 选项是干什么的。我点击了几次,从没有注意到有任何类型的任何活动表明该选项实际起了作用。

我发现 LXDE 是一个简单但强大的桌面。我享受使用它写这篇文章的几周时间。通过允许我访问我想要的应用程序和文件,同时在其余时间保持不会让我分神,LXDE 使我得以高效地工作。我也没有遇到任何妨碍我完成工作的问题——当然,除了我用于探索这个好桌面所花的时间。我非常推荐 LXDE 桌面。

我现在正在试用 GNOME 3 和 GNOME Shell,并将在下一期中报告。


作者简介:

David Both 是一个 Linux 和开源倡导者,他居住在北卡罗莱纳州的 Raleigh。他在 IT 行业已经超过 40 年,在他工作的 IBM 公司教授 OS/2 超过 20 年,他在 1981 年为最早的 IBM PC 写了第一个培训课程。他教过 Red Hat 的 RHCE 课程,在 MCI Worldcom、 Cisco 和北卡罗莱纳州 工作过。他一直在使用 Linux 和开源软件近 20 年。


via: https://opensource.com/article/17/3/8-reasons-use-lxde

作者:David Both 译者:ictlyh 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8434-1.html?utm_source=rss&utm_medium=rss

极客漫画:DOS 时代

$
0
0

在久远的 DOS 时代(其实也才 20 多年前),那个时候没有 Windows、没有图形界面的 OSX 和 Linux。那个时候,我们是用软盘来存储文件的,从开始的 5¼ 英寸的软盘(360 KB), 3½ 英寸软盘(720 KB),到后来的高密盘 720 KB 和 1.44 MB。甚至更古老的时候有(我没见过的) 8 英寸盘和打孔纸带。

记得那个时候经常揣着一盒软盘,到处拷贝(不,交换)别人珍藏的软件,比如 PCTools、Norton ,那简直都是珍宝啊。

你也不能想象,用杀毒软件在一张小小的 360 KB 软盘上查出上千个 DIR II 病毒而“滴滴”不断,让整个机房侧目。

在那个时候,像素风的游戏才是现实,而第一次见到《仙剑奇侠传》时,简直不能想象会有如此精美的图像(PS,后来有幸玩过 CD 版本,才知道片头曲的 CD 音轨和 软盘版的 MIDI 那叫一个天上地下)。所以,漫画里这哥俩看到 Accolade 公司做的这个赛车游戏,就感觉如此惊艳了。(LCTT 译注: Test Drive 是 Accloade 公司于 1987 年发行的跨平台赛车游戏,当时被评分为 4½ 星,总分 5 星。)

如果你也是远古时代过来的,不妨吐槽下你的当年;如果你是新生代的互联网原住民,请尽情的嘲讽吧~


via: https://turnoff.us/geek/tales-of-dos/

作者:Daniel Stori 译者&合成&点评:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8435-1.html?utm_source=rss&utm_medium=rss

在 RHEL、CentOS 及 Fedora 上安装 Drupal 8

$
0
0

Drupal 是一个开源,灵活,高度可拓展和安全的内容管理系统Content Management System(CMS),使用户轻松的创建网站。

它可以使用模块拓展,使用户将内容管理转换为强大的数字解决方案。

Drupal 运行在诸如 Apache、IIS、Lighttpd、Cherokee、Nginx 的 Web 服务器上,后端数据库可以使用 MySQL、MongoDB、MariaDB、PostgreSQL、MSSQL Server。

在这篇文章中, 我们会展示在 RHEL 7/6、CentOS 7/6 和 Fedora 20-25 发行版上使用 LAMP 架构,如何手动安装和配置 Drupal 8。

Drupal 需求:

  1. Apache 2.x (推荐)
  2. PHP 5.5.9 或 更高 (推荐 PHP 5.5)
  3. MySQL 5.5.3MariaDB 5.5.20 与 PHP 数据对象(PDO) 支持

安装过程中,我使用 drupal.tecmint.com 作为网站主机名,IP 地址为 192.168.0.104。你的环境也许与这些设置不同,因此请适当做出更改。

步骤 1:安装 Apache Web 服务器

1、 首先我们从官方仓库开始安装 Apache Web 服务器。

# yum install httpd

2、 安装完成后,服务开始是被禁用的,因此我们需要手动启动它,同时让它下次系统启动时自动启动,如下:

-------------  通过 SystemD - CentOS/RHEL 7 和 Fedora 22+ -------------------
# systemctl start httpd
# systemctl enable httpd

-------------  通过 SysVInit - CentOS/RHEL 6 和 Fedora ----------------------
# service httpd start
# chkconfig --level 35 httpd on

3、 接下来,为了允许通过 HTTPHTTPS 访问 Apache 服务,我们必须打开 HTTPD 守护进程正在监听的 80443 端口,如下所示:

------------ 通过 Firewalld - CentOS/RHEL 7 and Fedora 22+ -------------
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

------------ 通过 IPtables - CentOS/RHEL 6 and Fedora 22+ -------------
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# service iptables save
# service iptables restart

4、 现在验证 Apache 是否正常工作, 打开浏览器在地址栏中输入 http://server_IP, 输入你的服务器 IP 地址, 默认 Apache2 页面应出现,如下面截图所示:

Apache 默认页面

Apache 默认页面

步骤 2: 安装 Apache PHP 支持

5、 接下来,安装 PHP 和 PHP 所需模块。

# yum install php php-mbstring php-gd php-xml php-pear php-fpm php-mysql php-pdo php-opcache

重要: 假如你想要安装 PHP7, 你需要增加以下仓库:EPELWebtactic 才可以使用 yum 安装 PHP7.0:

------------- Install PHP 7 in CentOS/RHEL and Fedora -------------
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install php70w php70w-opcache php70w-mbstring php70w-gd php70w-xml php70w-pear php70w-fpm php70w-mysql php70w-pdo

6、 接下来,要从浏览器得到关于 PHP 安装和配置完整信息,使用下面命令在 Apache 文档根目录 (/var/www/html) 创建一个 info.php 文件。

# echo "<?php  phpinfo(); ?>" > /var/www/html/info.php

然后重启 HTTPD 服务器 ,在浏览器地址栏输入 http://server_IP/info.php

# systemctl restart httpd
或
# service httpd restart

验证 PHP 信息

验证 PHP 信息

步骤 3: 安装和配置 MariaDB 数据库

7、 请知晓, Red Hat Enterprise Linux/CentOS 7.0 从支持 MySQL 转为了 MariaDB 作为默认数据库管理系统。

要安装 MariaDB 数据库, 你需要添加 官方 MariaDB 库/etc/yum.repos.d/MariaDB.repo 中,如下所示。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

当仓库文件准备好后,你可以像这样安装 MariaDB:

# yum install mariadb-server mariadb

8、 当 MariaDB 数据库安装完成,启动数据库的守护进程,同时使它能够在下次启动后自动启动。

------------- 通过 SystemD - CentOS/RHEL 7 and Fedora 22+ -------------
# systemctl start mariadb
# systemctl enable mariadb
------------- 通过 SysVInit - CentOS/RHEL 6 and Fedora -------------
# service mysqld start
# chkconfig --level 35 mysqld on

9、 然后运行 mysql_secure_installation 脚本去保护数据库(设置 root 密码, 禁用远程登录,移除测试数据库并移除匿名用户),如下所示:

# mysql_secure_installation

Mysql安全安装

MySQL 安全安装

步骤 4: 在 CentOS 中安装和配置 Drupal 8

10、 这里我们使用 wget 命令 下载最新版本 Drupal(例如 8.2.6),如果你没有安装 wget 和 gzip 包 ,请使用下面命令安装它们:

# yum install wget gzip
# wget -c https://ftp.drupal.org/files/projects/drupal-8.2.6.tar.gz

11、 之后,解压 tar 文件 并移动 Drupal 目录到 Apache 文档根目录(/var/www/html)。

# tar -zxvf drupal-8.2.6.tar.gz
# mv drupal-8.2.6 /var/www/html/drupal

12、 然后,依据 /var/www/html/drupal/sites/default 目录下的示例设置文件 default.settings.php,创建设置文件 settings.php,然后给 Drupal 站点目录设置适当权限,包括子目录和文件,如下所示:

# cd /var/www/html/drupal/sites/default/
# cp default.settings.php settings.php
# chown -R apache:apache /var/www/html/drupal/

13、 更重要的是在 /var/www/html/drupal/sites/ 目录设置 SElinux 规则,如下:

# chcon -R -t httpd_sys_content_rw_t /var/www/html/drupal/sites/

14、 现在我们必须为 Drupal 站点去创建一个用于管理的数据库和用户。

# mysql -u root -p
Enter password:
MySQL Shell
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
**MySQL [(none)]> create database drupal;**
Query OK, 1 row affected (0.00 sec)
**MySQL [(none)]> create user ravi@localhost identified by 'tecmint123';**
Query OK, 0 rows affected (0.00 sec)
**MySQL [(none)]> grant all on drupal.* to ravi@localhost;**
Query OK, 0 rows affected (0.00 sec)
**MySQL [(none)]> flush privileges;**
Query OK, 0 rows affected (0.00 sec)
**MySQL [(none)]> exit**
Bye

15、 最后,打开地址: http://server_IP/drupal/ 开始网站的安装,选择你首选的安装语言然后点击保存以继续。

Drupal 安装语言

Drupal 安装语言

16、 下一步,选择安装配置文件,选择 Standard(标准),点击保存继续。

Drupal 安装配置文件

Drupal 安装配置文件

17、 在进行下一步之前查看并通过需求审查并启用 Clean URL

验证 Drupal 需求

验证 Drupal 需求

现在在你的 Apache 配置下启用 Clean URL 的 Drupal。

# vi /etc/httpd/conf/httpd.conf

确保为默认根文档目录 /var/www/html 设置 AllowOverride All,如下图所示:

在 Drupal 中启用 Clean URL

在 Drupal 中启用 Clean URL

18、 当你为 Drupal 启用 Clean URL,刷新页面从下面界面执行数据库配置,输入 Drupal 站点数据库名,数据库用户和数据库密码。

当填写完所有信息点击保存并继续

Drupal 数据库配置

Drupal 数据库配置

若上述设置正确,Drupal 站点安装应该完成了,如下图界面。

Drupal 安装

Drupal 安装

19、 接下来配置站点为下面的设置(使用适用你的情况的值):

  • 站点名称  – TecMint Drupal Site
  • 站点邮箱地址  – admin@tecmint.com
  • 用户名  – admin
  • 密码  – ##########
  • 用户的邮箱地址  – admin@tecmint.com
  • 默认国家  – India
  • 默认时区  – UTC

设置适当的值后,点击保存并继续完成站点安装过程。

Drupal 站点配置

Drupal 站点配置

20、下图显示的是通过 LAMP 成功安装的 Drupal 8 站点。

Drupal站点面板

Drupal 站点面板

现在你可以点击增加内容,创建示例网页内容。

选项: 有些人使用 MySQL 命令行管理数据库不舒服,可以从浏览器界面 安装 PHPMYAdmin 管理数据库

浏览 Drupal 文档 : https://www.drupal.org/docs/8

就这样! 在这个文章, 我们展示了在 CentOS 7 上如何去下载、安装和使用基本配置来设置 LAMP 以及 Drupal 8。 欢迎就这个教程提供反馈,或提供给我们一些相关信息。


作者简介:

Aaron Kili 是 linux 和 F.O.S.S 爱好者,将成为 Linux 系统管理员,Web 开发者,目前是 TecMint 的原创作者,热爱计算机工作,并且坚信知识共享。


via: http://www.tecmint.com/install-drupal-in-centos-rhel-fedora/

作者:Aaron Kili 译者:imxieke 校对:jasminepeng

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8436-1.html?utm_source=rss&utm_medium=rss

OpenContrail:一个 OpenStack 生态中的重要工具

$
0
0

OpenContrail

整个 2016 年,软件定义网络(SDN)迅速发展,开源和云计算领域的众多参与者正帮助其获得增长。结合这一趋势,用在 OpenStack 云计算平台上的流行的 SDN 平台 OpenContrail 正成为许多管理员需要具备的技能的重要工具。

正如管理员和开发人员在 OpenStack 生态系统中围绕着诸如 Ceph 等重要工具提升技能一样,他们将需要拥抱 OpenContrail,它是由 Apache 软件基金会全面开源并管理的软件。

考虑到这些,OpenStack 领域中最活跃的公司之一 Mirantis 已经宣布对 OpenContrail 的提供商业支持和贡献。该公司提到:“添加了 OpenContrail 后,Mirantis 将会为与 OpenStack 一起使用的开源技术,包括用于存储的 Ceph、用于计算的 OpenStack/KVM、用于 SDN 的 OpenContrail 或 Neutron 提供一站式的支持。”

根据 Mirantis 公告,“OpenContrail 是一个使用基于标准协议构建的 Apache 2.0 许可项目,为网络虚拟化提供了所有必要的组件 - SDN 控制器、虚拟路由器、分析引擎和已发布的上层 API,它有一个可扩展 REST API 用于配置以及从系统收集操作和分析数据。作为规模化构建,OpenContrail 可以作为云基础设施的基础网络平台。”

有消息称 Mirantis 收购了 TCP Cloud,这是一家专门从事 OpenStack、OpenContrail 和 Kubernetes 管理服务的公司。Mirantis 将使用 TCP Cloud 的云架构持续交付技术来管理将在 Docker 容器中运行的 OpenContrail 控制面板。作为这项工作的一部分,Mirantis 也会一直致力于 OpenContrail。

OpenContrail 的许多贡献者正在与 Mirantis 紧密合作,他们特别注意了 Mirantis 将提供的支持计划。

“OpenContrail 是 OpenStack 社区中一个重要的项目,而 Mirantis 很好地容器化并提供商业支持。我们团队正在做的工作使 OpenContrail 能轻松地扩展并更新,并与 Mirantis OpenStack 的其余部分进行无缝滚动升级。 ” Mirantis 的工程师总监和 OpenContrail 咨询委员会主任 Jakub Pavlik 说:“商业支持也将使 Mirantis 能够使该项目与各种交换机兼容,从而为客户提供更多的硬件和软件选择。”

除了 OpenContrail 的商业支持外,我们很可能还会看到 Mirantis 为那些想要学习如何利用它的云管理员和开发人员提供的教育服务。Mirantis 已经以其 OpenStack 培训课程而闻名,并将 Ceph 纳入了培训课程中。

在 2016 年,SDN 种类快速演变,并且对许多部署 OpenStack 的组织也有意义。IDC 最近发布了 SDN 市场的一项研究,预计从 2014 年到 2020 年 SDN 市场的年均复合增长率为 53.9%,届时市场价值将达到 125 亿美元。此外,“Technology Trends 2016” 报告将 SDN 列为组织最佳的技术投资之一。

IDC 网络基础设施总裁 Rohit Mehra 说:“云计算和第三方平台推动了 SDN 的需求,它将在 2020 年代表一个价值超过 125 亿美元的市场。丝毫不用奇怪的是 SDN 的价值将越来越多地渗透到网络虚拟化软件和 SDN 应用中,包括虚拟化网络和安全服务。大型企业在数据中心中实现 SDN 的价值,但它们最终将会认识到其在横跨分支机构和校园网络的广域网中的广泛应用。”

同时,Linux 基金会最近宣布发布了其 2016 年度报告“开放云指导:当前趋势和开源项目”。第三份年度报告全面介绍了开放云计算,并包含一个关于 SDN 的部分。

Linux 基金会还提供了软件定义网络基础知识(LFS265),这是一个自定进度的 SDN 在线课程,另外作为 Open Daylight 项目的领导者,另一个重要的开源 SDN 平台正在迅速成长。

(题图:CC0&nbspixabay)


via: https://www.linux.com/news/event/open-networking-summit/2017/2/opencontrail-essential-tool-openstack-ecosystem

作者:SAM DEAN 译者:geekpi 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8437-1.html?utm_source=rss&utm_medium=rss

2016 年度顶级开源创作工具

$
0
0

无论你是想修改图片、编译音频,还是制作动画,这里的自由而开源的工具都能帮你做到。

几年前,我在 Red Hat 总结会上做了一个简单的演讲,给与会者展示了 2012 年度开源创作工具。开源软件在过去几年里发展迅速,现在我们来看看 2016 年的相关领域的软件。

核心应用

这六款应用是开源的设计软件中的最强王者。它们做的很棒,拥有完善的功能特征集、稳定发行版以及活跃的开发者社区,是很成熟的项目。这六款应用都是跨平台的,每一个都能在 Linux、OS X 和 Windows 上使用,不过大多数情况下 Linux 版本一般都是最先更新的。这些应用广为人知,我已经把最新特性的重要部分写进来了,如果你不是非常了解它们的开发情况,你有可能会忽视这些特性。

如果你想要对这些软件做更深层次的了解,或许你可以帮助测试这四个软件 —— GIMP、Inkscape、Scribus,以及 MyPaint 的最新版本,在 Linux 机器上你可以用 Flatpak 软件轻松地安装它们。这些应用的每日构建版本可以按照指令 通过 Flatpak 的“每日构建的绘图应用(Nightly Graphics Apps)”得到。有一件事要注意:如果你要给每个应用的 Flatpak 版本安装笔刷或者其它扩展,用于移除这些扩展的目录将会位于相应应用的目录 ~/.var/app 下。

GIMP

GIMP 在 2015 年迎来了它的 20 周岁,使得它成为这里资历最久的开源创造型应用之一。GIMP 是一款强大的应用,可以处理图片,创作简单的绘画,以及插图。你可以通过简单的任务来尝试 GIMP,比如裁剪、缩放图片,然后循序渐进使用它的其它功能。GIMP 可以在 Linux、Mac OS X 以及 Windows 上使用,是一款跨平台的应用,而且能够打开、导出一系列格式的文件,包括在与之相似的软件 Photoshop 上广为应用的那些格式。

GIMP 开发团队正在忙着 2.10 发行版的工作;2.8.18 是最新的稳定版本。更振奋人心的是非稳定版,2.9.4,拥有全新的用户界面,旨在节省空间的符号式图标和黑色主题,改进了颜色管理,更多的基于 GEGL 的支持分离预览的过滤器,支持 MyPaint 笔刷(如下图所示),对称绘图,以及命令行批次处理。想了解更多信息,请关注 完整的发行版注记

GIMP 截图

Inkscape

Inkscape 是一款富有特色的矢量绘图设计软件。可以用它来创作简单的图形、图表、布局或者图标。

最新的稳定版是 0.91 版本;与 GIMP 相似,能在预发布版 0.92pre3 版本中找到更多有趣的东西,其发布于 2016 年 11 月。最新推出的预发布版的突出特点是 梯度网格特性gradient mesh feature(如下图所示);0.91 发行版里介绍的新特性包括:强力笔触(power stroke) 用于完全可配置的书法笔画(下图的 “opensource.com” 中的 “open” 用的就是强力笔触技术),画布测量工具,以及 全新的符号对话框(如下图右侧所示)。(很多符号库可以从 GitHub 上获得;Xaviju's inkscape-open-symbols set 就很不错。)对象对话框是在改进版或每日构建中可用的新特性,整合了一个文档中的所有对象,提供工具来管理这些对象。

Inkscape 截图

Scribus

Scribus 是一款强大的桌面出版和页面布局工具。Scribus 让你能够创造精致美丽的物品,包括信封、书籍、杂志以及其它印刷品。Scribus 的颜色管理工具可以处理和输出 CMYK 格式,还能给文件配色,可靠地用于印刷车间的重印。

1.4.6 是 Scribus 的最新稳定版本;1.5.x 系列的发行版更令人期待,因为它们是即将到来的 1.6.0 发行版的预览。1.5.3 版本包含了 Krita 文件(*.KRA)导入工具; 1.5.x 系列中其它的改进包括了表格工具、文本框对齐、脚注、导出可选 PDF 格式、改进的字典、可驻留边框的调色盘、符号工具,和丰富的文件格式支持。

Scribus 截图

MyPaint

MyPaint 是一款用于数位屏的快速绘图和插画工具。它很轻巧,界面虽小,但快捷键丰富,因此你能够不用放下数位笔而专心于绘图。

MyPaint 1.2.0 是其最新的稳定版本,包含了一些新特性,诸如 直观上墨工具 用来跟踪铅笔绘图的轨迹,新的填充工具,层分组,笔刷和颜色的历史面板,用户界面的改进包括暗色主题和小型符号图标,以及可编辑的矢量层。想要尝试 MyPaint 里的最新改进,我建议安装每日构建版的 Flatpak 构建,尽管自从 1.2.0 版本没有添加重要的特性。

MyPaint 截图

Blender

Blender 最初发布于 1995 年 1 月,像 GIMP 一样,已经有 20 多年的历史了。Blender 是一款功能强大的开源 3D 制作套件,包含建模、雕刻、渲染、真实材质、套索、动画、影像合成、视频编辑、游戏创作以及模拟。

Blender 最新的稳定版是 2.78a。2.78 版本很庞大,包含的特性有:改进的 2D 蜡笔Grease Pencil 动画工具;针对球面立体图片的 VR 渲染支持;以及新的手绘曲线的绘图工具。

Inkscape 截图

要尝试最新的 Blender 开发工具,有很多种选择,包括:

  • Blender 基金会在官方网址提供 非稳定版的每日构建版
  • 如果你在寻找特殊的开发中特性,graphicall.org 是一个适合社区的网站,能够提供特殊版本的 Blender(偶尔还有其它的创造型开源应用),让艺术家能够尝试体验最新的代码。
  • Mathieu Bridon 通过 Flatpak 做了 Blender 的一个开发版本。查看它的博客以了解详情:Flatpak 上每日构建版的 Blender

Krita

Krita 是一款拥有强大功能的数字绘图应用。这款应用贴合插画师、印象艺术家以及漫画家的需求,有很多附件,比如笔刷、调色板、图案以及模版。

最新的稳定版是 Krita 3.0.1,于 2016 年 9 月发布。3.0.x 系列的新特性包括 2D 逐帧动画;改进的层管理器和功能;丰富的常用快捷键;改进了网格、向导和图形捕捉;还有软打样。

Krita 截图

视频处理工具

关于开源的视频编辑工具则有很多很多。这这些工具之中,Flowblade 是新推出的,而 Kdenlive 则是构建完善、对新手友好、功能最全的竞争者。对你排除某些备选品有所帮助的主要标准是它们所支持的平台,其中一些只支持 Linux 平台。它们的软件上游都很活跃,最新的稳定版都于近期发布,发布时间相差不到一周。

Kdenlive

Kdenlive,最初于 2002 年发布,是一款强大的非线性视频编辑器,有 Linux 和 OS X 版本(但是 OS X 版本已经过时了)。Kdenlive 有用户友好的、基于拖拽的用户界面,适合初学者,又有专业人员需要的深层次功能。

可以看看 Seth Kenlon 写的 Kdenlive 系列教程,了解如何使用 Kdenlive。

  • 最新稳定版: 16.08.2 (2016 年 10 月)

Flowblade

2012 年发布, Flowblade,只有 Linux 版本的视频编辑器,是个相当不错的后起之秀。

  • 最新稳定版: 1.8 (2016 年 9 月)

Pitivi

Pitivi 是用户友好型的自由开源视频编辑器。Pitivi 是用 Python 编写的(&ldquoitivi” 中的 &ldquoi”来源于此),使用了 GStreamer 多媒体框架,社区活跃。

  • 最新稳定版: 0.97 (2016 年 8 月)
  • 通过 Flatpak 获取 最新版本

Shotcut

Shotcut 是一款自由开源的跨平台视频编辑器,早在 2004 年就发布了,之后由现在的主要开发者 Dan Dennedy 重写。

  • 最新稳定版: 16.11 (2016 年 11 月)
  • 支持 4K 分辨率
  • 仅以 tar 包方式发布

OpenShot Video Editor

始于 2008 年,OpenShot Video Editor 是一款自由、开源、易于使用、跨平台的视频编辑器。

  • 最新稳定版: 2.1 (2016 年 8 月)

其它工具

SwatchBooker

SwatchBooker 是一款很方便的工具,尽管它近几年都没有更新了,但它还是很有用。SwatchBooler 能帮助用户从各大制造商那里合法地获取色卡,你可以用其它自由开源的工具处理它导出的格式,包括 Scribus。

GNOME Color Manager

GNOME Color Manager 是 GNOME 桌面环境内建的颜色管理器,而 GNOME 是某些 Linux 发行版的默认桌面。这个工具让你能够用色度计为自己的显示设备创建属性文件,还可以为这些设备加载/管理 ICC 颜色属性文件。

GNOME Wacom Control

The GNOME Wacom controls 允许你在 GNOME 桌面环境中配置自己的 Wacom 手写板;你可以修改手写板交互的很多选项,包括自定义手写板灵敏度,以及手写板映射到哪块屏幕上。

Xournal

Xournal 是一款简单但可靠的应用,可以让你通过手写板手写或者在笔记上涂鸦。Xournal 是一款有用的工具,可以让你签名或注解 PDF 文档。

PDF Mod

PDF Mod 是一款编辑 PDF 文件很方便的工具。PDF Mod 让用户可以移除页面、添加页面,将多个 PDF 文档合并成一个单独的 PDF 文件,重新排列页面,旋转页面等。

SparkleShare

SparkleShare 是一款基于 git 的文件分享工具,艺术家用来协作和分享资源。它会挂载在 GitLab 仓库上,你能够采用一个精妙的开源架构来进行资源管理。SparkleShare 的前端通过在顶部提供一个类似下拉框界面,避免了使用 git 的复杂性。

摄影

Darktable

Darktable 是一款能让你编辑 RAW 文件的应用,有一系列工具,可以管理工作流、无损编辑图片。Darktable 支持许多流行的相机和镜头。

改变颜色平衡度的图片

Entangle

Entangle 允许你将数字相机连接到电脑上,让你能从电脑上完全控制相机。

Hugin

Hugin 是一款工具,让你可以拼接照片,从而制作全景照片。

2D 动画

Synfig Studio

Synfig Studio 是基于矢量的二维动画套件,支持位图原图,在平板上用起来方便。

Blender Grease Pencil

我在前面讲过了 Blender,但值得注意的是,最近的发行版里重构的蜡笔特性,添加了创作二维动画的功能。

Krita

Krita 现在同样提供了二维动画功能。

音频编辑

Audacity

Audacity 在编辑音频文件、记录声音方面很有名,是用户友好型的工具。

Ardour

Ardour 是一款数字音频工作软件,界面中间是录音,编辑和混音工作流。使用上它比 Audacity 要稍微难一点,但它允许自动操作,并且更高端。(有 Linux、Mac OS X 和 Windows 版本)

Hydrogen

Hydrogen 是一款开源的电子鼓,界面直观。它可以用合成的乐器创作、整理各种乐谱。

Mixxx

Mixxx 是四仓 DJ 套件,让你能够以强大操控来 DJ 和混音歌曲,包含节拍循环、时间延长、音高变化,还可以用 DJ 硬件控制器直播混音和衔接。

Rosegarden

Rosegarden 是一款作曲软件,有乐谱编写和音乐作曲或编辑的功能,提供音频和 MIDI 音序器。(LCTT 译注:MIDI 即 Musical Instrument Digital Interface 乐器数字接口)

MuseScore

MuseScore 是乐谱创作、记谱和编辑的软件,它还有个乐谱贡献者社区。

其它具有创造力的工具

MakeHuman

MakeHuman 是一款三维绘图工具,可以创造人型的真实模型。

Natron

Natron 是基于节点的合成工具,用于视频后期制作、动态图象和设计特效。

FontForge

FontForge 是创作和编辑字体的工具。允许你编辑某个字体中的字形,也能够使用这些字形生成字体。

Valentina

Valentina 是用来设计缝纫图案的应用。

Calligra Flow

Calligra Flow 是一款图表工具,类似 Visio(有 Linux,Mac OS X 和 Windows 版本)。

资源

这里有很多小玩意和彩蛋值得尝试。需要一点灵感来探索?这些网站和论坛有很多教程和精美的成品能够激发你开始创作:

1、 pixls.us: 摄影师 Pat David 管理的博客,他专注于专业摄影师使用的自由开源的软件和工作流。

2、 David Revoy 's Blog: David Revoy 的博客,热爱自由开源,非常有天赋的插画师,概念派画师和开源倡议者,对 Blender 基金会电影有很大贡献。

3、 The Open Source Creative Podcast: 由 Opensource.com 社区版主和专栏作家 Jason van Gumster 管理,他是 Blender 和 GIMP 的专家, 《Blender for Dummies》 的作者,该文章正好是面向我们这些热爱开源创作工具和这些工具周边的文化的人。

4、 Libre Graphics Meeting: 自由开源创作软件的开发者和使用这些软件的创作者的年度会议。这是个好地方,你可以通过它找到你喜爱的开源创作软件将会推出哪些有意思的特性,还可以了解到这些软件的用户用它们在做什么。


作者简介:

Máirín Duffy - Máirín 是 Red Hat 的首席交互设计师。她热衷于自由软件和开源工具,尤其是在创作领域:她最喜欢的应用是 Inkscape

(题图: pixabay,CC0)


via: https://opensource.com/article/16/12/yearbook-top-open-source-creative-tools-2016

作者:Máirín Duffy 译者:GitFuture 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8439-1.html?utm_source=rss&utm_medium=rss

OpenVAS:Kali Linux 中的漏洞评估工具

$
0
0

本教程将介绍在 Kali Linux 中安装 OpenVAS 8.0 的过程。 OpenVAS 是一个可以自动执行网络安全审核和漏洞评估的开源漏洞评估程序。请注意,漏洞评估Vulnerability Assessment也称为 VA 并不是渗透测试penetration test,渗透测试会进一步验证是否存在发现的漏洞,请参阅什么是渗透测试来对渗透测试的构成以及不同类型的安全测试有一个了解。

什么是 Kali Linux?

Kali Linux 是 Linux 渗透测试分发版。它基于 Debian,并且预安装了许多常用的渗透测试工具,例如 Metasploit Framework (MSF)和其他通常在安全评估期间由渗透测试人员使用的命令行工具。

在大多数使用情况下,Kali 运行在虚拟机中,你可以在这里获取最新的 VMWare 或 Vbox 镜像:https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/

除非你有特殊的原因想要一个更小的虚拟机占用空间,否则请下载完整版本而不是 Kali light。 下载完成后,你需要解压文件并打开 vbox 或者 VMWare .vmx 文件,虚拟机启动后,默认帐号是 root/toor。请将 root 密码更改为安全的密码。

或者,你可以下载 ISO 版本,并在裸机上执行 Kali 的安装。

升级 Kali Linux

完成安装后,为 Kail Linux 执行一次完整的升级。

升级 Kali:

apt-get update && apt-get dist-upgrade -y

Updating Kali Linux

更新过程可能需要一些时间才能完成。Kali 目前是滚动更新,这意味着你可以从任何版本的 Kali 滚动更新到当前版本。然而它仍有发布号,但这些是针对特定 Kali 时间点版本的 VMWare 快照。你可以从任何 VMWare 镜像更新到当前的稳定版本。

更新完成后重新启动。

安装 OpenVAS 8

Installing OpenVAS 8

apt-get install openvas

openvas-setup

在安装中,你会被询问关于 redis 的问题,选择默认选项来以 UNIX 套接字运行。

Configure OpenVAS Scanner

即使是有快速的网络连接,openvas-setup 仍需要很长时间来下载和更新所有所需的 CVE、SCAP 定义。

Update all the required CVE, SCAP definitions

请注意 openvas-setup 的命令输出,密码会在安装过程中生成,并在安装的最后在控制台中打印出来。

Command output during install

验证 openvas 正在运行:

netstat -tulpn

Check OpenVAS Status

在 Kali 中运行 OpenVAS

要在 Kali 中启动 OpenVAS:

openvas-start

安装后,你应该可以通过 https://127.0.0.1:9392 访问 OpenVAS 的 web 程序了。

OpenVAS started

接受自签名证书,并使用 openvas-setup 输出的 admin 凭证和密码登录程序。

Accept the self-signed SSL cert

接受自签名证书后,你应该可以看到登录界面了。

OpenVAS Login

登录后,你应该可以看到下面的页面:

OpenVAS Dashboard

从此,你应该可以使用向导配置自己的漏洞扫描了。

我建议阅读文档。请注意漏洞评估导向(取决于 OpenVAS 可能尝试利用的配置)及其在网络上生成的流量以及网络上可能对服务/服务器和主机/设备产生的 DOS 影响。

(题图:pixabay.com, CC0)


via: https://www.howtoforge.com/tutorial/openvas-vulnerability-assessment-install-on-kali-linux/

作者:KJS 译者:geekpi 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8441-1.html?utm_source=rss&utm_medium=rss

使用 Cozy 搭建个人云

$
0
0

使用 Cozy 搭建个人云

我认识的大部分人为了他们的日历、电子邮件、文件存储等,都会使用一些基于 Web 的应用。但是,如果像我这样,对隐私感到担忧、或者只是希望将你自己的数字生活简单化为一个你所控制的地方呢? Cozy 就是一个朝着健壮的自主云平台方向发展的项目。你可以从 GitHub 上获取 Cozy 的源代码,它采用 AGPL 3.0 协议。

安装

安装 Cozy 非常快捷简单,这里有多种平台的 简单易懂的安装指令。在我的测试中,我使用 64 位的 Debian 8 系统。安装需要几分钟时间,然后你只需要到服务器的 IP 地址注册一个账号,就会加载并准备好默认的应用程序集。

要注意的一点 - 安装假设没有正在运行任何其它 Web 服务,而且它会尝试安装 Nginx web 服务器。如果你的服务器已经有网站正在运行,配置可能就比较麻烦。我是在一个全新的 VPS(Virtual Private Server,虚拟个人服务器)上安装,因此比较简单。运行安装程序、启动 Nginx,然后你就可以访问云了。

Cozy 还有一个 应用商店,你可以从中下载额外的应用程序。有一些看起来非常有趣,例如 Ghost 博客平台 以及开源维基 TiddlyWiki。其目的,显然是允许把其它很多好的应用程序集成到这个平台。我认为你要看到很多其它流行的开源应用程序提供集成功能只是时间问题。此刻,已经支持 Node.js,但是如果也支持其它应用层,你就可以看到很多其它很好的应用程序。

其中可能的一个功能是从安卓设备中使用免费的安卓应用程序访问你的信息。当前还没有 iOS 应用,但有计划要解决这个问题。

现在,Cozy 已经有很多核心的应用程序。

主要 Cozy 界面

主要 Cozy 界面

文件

和很多分支一样,我使用 Dropbox 进行文件存储。事实上,由于我有很多东西需要存储,我需要花钱买 DropBox Pro。对我来说,如果它有我想要的功能,那么把我的文件移动到 Cozy 能为我节省很多开销。

我希望如此,而它真的可以。我被 Cozy 应用程序内建的基于 web 的文件上传和文件管理工具所惊讶。拖拽功能正如你期望的那样,界面也很干净整洁。我在上传事例文件和目录、随处跳转、移动、删除以及重命名文件时都没有遇到问题。

如果你想要的就是基于 web 的云文件存储,那么你已经有了。对我来说,它缺失的是 DropBox 具有的选择性的文件目录同步功能。在 DropBox 中,如果你拖拽一个文件到目录中,它就会被拷贝到云,几分钟后该文件在你所有同步设备中都可以看到。实际上,Cozy 正在研发该功能,但此时它还处于 beta 版,而且只支持 Linux 客户端。另外,我有一个称为 Download to Dropbox 的 Chrome 扩展,我时不时用它抓取图片和其它内容,但当前 Cozy 中还没有类似的工具。

文件管理界面

文件管理界面

从 Google 导入数据

如果你正在使用 Google 日历和联系人,使用 Cozy 安装的应用程序很轻易的就可以导入它们。当你授权对 Google 的访问时,会给你一个 API 密钥,把它粘贴到 Cozy,它就会迅速高效地进行复制。两种情况下,内容都会被打上“从 Google 导入”的标签。对于我混乱的联系人,这可能是件好事情,因为它使得我有机会重新整理,把它们重新标记为更有意义的类别。“Google Calendar” 中所有的事件都导入了,但是我注意到其中一些事件的时间不对,可能是由于两端时区设置的影响。

联系人

联系人功能正如你期望的那样,界面也很像 Google 联系人。尽管如此,还是有一些不好的地方。例如,和你的智能手机的同步是通过 CardDAV 完成的,这是用于共享联系人数据的标准协议,但安卓手机并不原生支持该技术。为了把你的联系人同步到安卓设备,你需要在你的手机上安装一个应用。这对我来说是个很大的打击,因为我已经有很多类似这样的古怪应用程序了(例如 工作的邮件、Gmail 以及其它邮件,我的天),我并不想安装一个不能和我智能手机原生联系人应用程序同步的软件。如果你正在使用 iPhone,你直接就能使用 CradDAV。

日历

对于日历用户来说好消息就是安卓设备支持这种类型数据的交换格式 CalDAV。正如我导入数据时提到的,我的一些日历时间的时间不对。在这之前我在和其它日历系统进行迁移时也遇到过这个问题,因此这对我并没有产生太大困扰。界面允许你创建和管理多个日历,就像 Google 那样,但是你不能订阅这个 Cozy 实例之外的其它日历。该应用程序另一个怪异的地方就是它的一周从周一开始,而且你不能更改。通常来说,我从周日开始我的一周,因此能更改从周一开始的功能对我来说非常有用。设置对话框并没有任何设置;它只是告诉你如何通过 CalDAV 连接的指令。再次说明,这个应用程序接近我想要的,但 Cozy 做的还不够好。

照片

照片应用让我印象深刻,它从文件应用程序借鉴了很多东西。你甚至可以把一个其它应用程序的照片文件添加到相册,或者直接通过拖拽上传。不幸的是,一旦上传后,我没有找到任何重新排序和编辑照片的方法。你只能把它们从相册中删除。应用有一个通过令牌链接进行分享的工具,而且你可以指定一个或多个联系人。系统会给这些联系人发送邀请他们查看相册的电子邮件。当然还有很多比这个有更丰富功能的相册应用,但在 Cozy 平台中这算是一个好的起点。

Photos 界面

Photos 界面

总结

Cozy 目标远大。他们尝试搭建一个你能部署任意你想要的基于云服务的平台。它已经到了成熟期吗?我并不认为。对于一些重度用户来说我之前提到的一些问题很严重,而且还没有 iOS 应用,这可能阻碍用户使用它。不管怎样,继续关注吧 - 随着研发的继续,Cozy 有一家代替很多应用程序的潜能。


作者简介:

D Ruth Bavousett - D Ruth Bavousett 作为系统管理员和软件开发者已经很长时间了,长期以来她都专注于 a VAX 11/780。(到目前为止)她花了很多时间服务于图书馆的技术需求,她从 2008 年就开始成为 Koha 开源图书馆自动化套件的贡献者。 Ruth 现在是 Houston cPanel 公司的 Perl 开发人员,同时还是两个孩子的母亲。

(题图 : Pixabay.  CC BY-SA 4.0)


via: https://opensource.com/article/17/2/cozy-personal-cloud

作者:D Ruth Bavousett 译者:ictlyh 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8440-1.html?utm_source=rss&utm_medium=rss


如何在树莓派上安装 Fedora 25

$
0
0

了解 Fedora 第一个官方支持树莓派的版本

How to install Fedora 25 on your Raspberry Pi

2016 年 10 月,Fedora 25 Beta 发布了,随之而来的还有对 树莓派 2 和 3 的初步支持。Fedora 25 的最终“通用”版在一个月后发布,从那时起,我一直在树莓派上尝试不同的 Fedora spins。

这篇文章不仅是一篇树莓派Raspberry Pi 3 上的 Fedora 25 的点评,还集合了技巧、截图以及我对 Fedora 第一个官方支持 Pi 的这个版本的一些个人看法。

在我开始之前,需要说一下的是,为写这篇文章所做的所有工作都是在我的运行 Fedora 25 的个人笔记本电脑上完成的。我使用一张 microSD 插到 SD 适配器中,复制和编辑所有的 Fedora 镜像到 32GB 的 microSD 卡中,然后用它在一台三星电视上启动了树莓派 3。 因为 Fedora 25 尚不支持内置 Wi-Fi,所以树莓派 3 使用了以太网线缆进行网络连接。最后,我使用了 Logitech K410 无线键盘和触摸板进行输入。

如果你没有条件使用以太网线连接在你的树莓派上玩 Fedora 25,我曾经用过一个 Edimax Wi-Fi USB 适配器,它也可以在 Fedora 25 上工作,但在本文中,我只使用了以太网连接。

在树莓派上安装 Fedora 25 之前

阅读 Fedora 项目 wiki 上的树莓派支持文档。你可以从 wiki 下载 Fedora 25 安装所需的镜像,那里还列出了所有支持和不支持的内容。

此外,请注意,这是初始支持版本,还有许多新的工作和支持将随着 Fedora 26 的发布而出现,所以请随时报告 bug,并通过 Bugzilla、Fedora 的 ARM 邮件列表、或者 Freenode IRC 频道#fedora-arm,分享你在树莓派上使用 Fedora 25 的体验反馈。

安装

我下载并安装了五个不同的 Fedora 25 spin:GNOME(默认工作站)、KDE、Minimal、LXDE 和 Xfce。在多数情况下,它们都有一致和易于遵循的步骤,以确保我的树莓派 3 上启动正常。有的 spin 有已知 bug 的正在解决之中,而有的按照 Fedora wik 遵循标准操作程序即可。

GNOME on Raspberry Pi

树莓派 3 上的 Fedora 25 workstation、 GNOME 版本

安装步骤

1、 在你的笔记本上,从支持文档页面的链接下载一个树莓派的 Fedora 25 镜像。

2、 在笔记本上,使用 fedora-arm-installer 或下述命令行将镜像复制到 microSD:

xzcat Fedora-Workstation-armhfp-25-1.3-sda.raw.xz | dd bs=4M status=progress of=/dev/mmcblk0

注意:/dev/mmclk0 是我的 microSD 插到 SD 适配器后,在我的笔记本电脑上挂载的设备名。虽然我在笔记本上使用 Fedora,可以使用 fedora-arm-installer,但我还是喜欢命令行。

3、 复制完镜像后,先不要启动你的系统。我知道你很想这么做,但你仍然需要进行几个调整。

4、 为了使镜像文件尽可能小以便下载,镜像上的根文件系统是很小的,因此你必须增加根文件系统的大小。如果你不这么做,你仍然可以启动你的派,但如果你一旦运行 dnf update 来升级你的系统,它就会填满文件系统,导致糟糕的事情发生,所以趁着 microSD 还在你的笔记本上进行分区:

growpart /dev/mmcblk0 4
resize2fs /dev/mmcblk0p4

注意:在 Fedora 中,growpart 命令由 cloud-utils-growpart.noarch 这个 RPM 提供的。

5、文件系统更新后,您需要将 vc4 模块列入黑名单。更多有关此 bug 的信息在此。

我建议在启动树莓派之前这样做,因为不同的 spin 有不同表现方式。例如,(至少对我来说)在没有黑名单 vc4 的情况下,GNOME 在我启动后首先出现,但在系统更新后,它不再出现。 KDE spin 则在第一次启动时根本不会出现 KDE。因此我们可能需要在我们的第一次启动之前将 vc4 加入黑名单,直到这个错误以后解决了。

黑名单应该出现在两个不同的地方。首先,在你的 microSD 根分区上,在 etc/modprode.d/ 下创建一个 vc4.conf,内容是:blacklist vc4。第二,在你的 microSD 启动分区,添加 rd.driver.blacklist=vc4extlinux/extlinux.conf 文件的末尾。

6、 现在,你可以启动你的树莓派了。

启动

你要有耐心,特别是对于 GNOME 和 KDE 发行版来说。在 SSD(固态驱动器)几乎即时启动的时代,你很容易就对派的启动速度感到不耐烦,特别是第一次启动时。在第一次启动 Window Manager 之前,会先弹出一个初始配置页面,可以配置 root 密码、常规用户、时区和网络。配置完毕后,你就应该能够 SSH 到你的树莓派上,方便地调试显示问题了。

系统更新

在树莓派上运行 Fedora 25 后,你最终(或立即)会想要更新系统。

首先,进行内核升级时,先熟悉你的 /boot/extlinux/extlinux.conf 文件。如果升级内核,下次启动时,除非手动选择正确的内核,否则很可能会启动进入救援( Rescue )模式。避免这种情况发生最好的方法是,在你的 extlinux.conf 中将定义 Rescue 镜像的那五行移动到文件的底部,这样最新的内核将在下次自动启动。你可以直接在派上或通过在笔记本挂载来编辑 /boot/extlinux/extlinux.conf

label Fedora 25 Rescue fdcb76d0032447209f782a184f35eebc (4.9.9-200.fc25.armv7hl)
            kernel /vmlinuz-0-rescue-fdcb76d0032447209f782a184f35eebc
            append ro root=UUID=c19816a7-cbb8-4cbb-8608-7fec6d4994d0 rd.driver.blacklist=vc4
            fdtdir /dtb-4.9.9-200.fc25.armv7hl/
            initrd /initramfs-0-rescue-fdcb76d0032447209f782a184f35eebc.img

第二点,如果无论什么原因,如果你的显示器在升级后再次变暗,并且你确定已经将 vc4 加入黑名单,请运行 lsmod | grep vc4。你可以先启动到多用户模式而不是图形模式,并从命令行中运行 startx。 请阅读 /etc/inittab 中的内容,了解如何切换 target 的说明。

KDE on Raspberry Pi 3

树莓派 3 上的 Fedora 25 workstation、 KDE 版本

Fedora Spin

在我尝试过的所有 Fedora Spin 中,唯一有问题的是 XFCE spin,我相信这是由于这个已知的 bug 导致的。

按照我在这里分享的步骤操作,GNOME、KDE、LXDE 和 minimal 都运行得很好。考虑到 KDE 和 GNOME 会占用更多资源,我会推荐想要在树莓派上使用 Fedora 25 的人使用 LXDE 和 Minimal。如果你是一位系统管理员,想要一台廉价的 SELinux 支持的服务器来满足你的安全考虑,而且只是想要使用树莓派作为你的服务器,开放 22 端口以及 vi 可用,那就用 Minimal 版本。对于开发人员或刚开始学习 Linux 的人来说,LXDE 可能是更好的方式,因为它可以快速方便地访问所有基于 GUI 的工具,如浏览器、IDE 和你可能需要的客户端。

LXES on Raspberry Pi

树莓派 3 上的 Fedora 25 workstation、LXDE。

看到越来越多的 Linux 发行版在基于 ARM 的树莓派上可用,那真是太棒了。对于其第一个支持的版本,Fedora 团队为日常 Linux 用户提供了更好的体验。我很期待 Fedora 26 的改进和 bug 修复。

(题图: opensource.com)


作者简介:

Anderson Silva - Anderson 于 1996 年开始使用 Linux。更精确地说是 Red Hat Linux。 2007 年,他作为 IT 部门的发布工程师时加入红帽,他的职业梦想成为了现实。此后,他在红帽担任过多个不同角色,从发布工程师到系统管理员、高级经理和信息系统工程师。他是一名 RHCE 和 RHCA 以及一名活跃的 Fedora 包维护者。


via: https://opensource.com/article/17/3/how-install-fedora-on-raspberry-pi

作者:Anderson Silva 译者:geekpi 校对:jasminepeng

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8444-1.html?utm_source=rss&utm_medium=rss

观察:阿里巴巴的开源战略究竟怎么样?

$
0
0

背景

开源目前已经成为全球IT 界和互联网界一致推崇的文化和战略,而阿里巴巴作为国际顶级的互联网企业之一,在开源方面也一直秉持坚定而热忱的态度,积极地将其一些成熟或发展中的产品和技术以开源、开放的态度回馈到社区。

据目前已知的数据,阿里巴巴(以下简称阿里)已经贡献了上百款软件项目,其中去年到现在就开源了三十个左右的项目,得到了开源界和业界积极关注和参与,其中不乏重量级的开源项目。

不过,对于阿里的开源举措,业界也有一些不同的声音,比如有人认为阿里的开源项目虎头蛇尾,往往开源后就置之不理,活跃度走低,缺乏进一步的维护;也有人认为阿里的开源项目实际并没有得到社区的广泛参与和认可,更多还是阿里自身的员工在进行维护,社区并没有对这些项目提供有力的贡献,也没有衍生出重要的分支项目。

为了对中国企业在开源方面的情况进行深入的了解,从而对开源和企业之间的关系做一些定性、定量的分析,那么,让我们来具体分析一下阿里高调开源几年以来的开源项目的发展情况。

说明:我们本次的分析仅以阿里在 GitHub 上的开源项目的公开数据为基础,并不涉及到阿里在其它开源社区和代码托管网站的情况。

首先,我们在 GitHub 上找到阿里的开源团队,其在 GitHub 以团队形式出现的有几个,这里我们主要分析 https://github.com/alibabahttps://github.com/ant-design 两个团队的情况。

在上述的 alibaba团队中,我们可以发现,其名下的代码库repository截止至本文写作时多达 133 个。但是有些项目仅仅是对上游项目的复刻fork,并无或甚少进行修改提交,也有一些项目无实际意义,因此经过筛选后,我们得到了大约110 个项目。

而在 alibaba 团队中正式公开登记的成员(员工和前员工)有101 个,有不少参与贡献的成员没有公开登记,但是我们在做数据分析时,将邮件后缀域是 alibaba-inc.com、alipay.com、taobao.com、aliyun.com 的贡献者也归类为阿里员工。

阿里团队在 GitHub 旗下的项目数量和登记成员数在国内互联网公司来说,已经不算少了,虽然据统计,阿里团队所获得的星标star数全球排名第12位,国内排到了第一,但是和国际上的一些开源领袖公司相比,还有较大距离。(注:如果累计 ant-design 团队项目的星标数,由于该团队旗下的开源项目包括了去年的一个重点项目 ant-design,其排名应该可以更高一些。)

在本文中,我们将从这些开源项目的各个维度的数据来进行分析,主要关注于以下两个方面:

  • 项目的活跃程度
  • 社区的参与程度

在分析之前,我们需要先了解哪些数据对我们来说是重要的,以及其背后反映的意义。

GitHub 上的开源项目指标

在 GitHub 上开源的项目有那些指标呢?可以反映出什么信息?

我们认为可以从以下几个指标进行分析:

1、项目的提交commit数量、分支branch数量、发布release数量。

这代表了项目代码的活跃程度,其中提交数量是主要指标,而分支数量和发布数量虽然也可以侧面反映出代码的活跃程度,但是更多是不同的相关项目管理方式导致的。

2、项目的拉取请求pull request(PR)数量、贡献者contributor数量、问题issue数量。

这代表了项目参与者的参与程度,其中拉取请求数量是主要指标,而贡献者数量和问题数量与之正相关,可以反映出贡献者分布密度和项目反馈速度。

3、项目的复刻fork数量、星标star数量、关注watch数量。

这代表了项目的受关注程度,其中复刻数量是主要指标,因为复刻一个项目往往代表了社区更多的参与意愿,并进而通过提交拉取请求、问题等进行参与,这也是社区生态发展不同的下游衍生版本的必由之路。而星标数量和关注数量,现在由于逐渐蔓延的 GitHub 营销潮流,其水分比较大,可以作为辅助指标参考。

4、项目的持续时长和最后更新时间。

项目的持续时长是从项目建立开始到最后更新时间之间的时长,这代表了项目的生存时间。如果最后更新时间是很久以前,则代表该项目已经陷入消亡中。

项目的提交数量

阿里开源的项目很多,但如同大多数企业组织一样,各个项目的活跃程度大相径庭。有的活跃项目得到了来自社区上万的星标star、数千的复刻fork乃至上千的拉取请求pull request,项目本身也拥有数万的提交commit乃至几十个分支branch;而有的项目则数据寥寥,基本上陷入沉寂,其中有一半数量的项目最后提交于一年前,甚至还有 5 个项目的最后更新于 5 年前——基本上可以判定已经停止维护。

在统计时,我们发现一种情况,复刻或衍生的上游项目,会将上游的提交数量、分支数量等数据继承下来,因此在针对阿里对该项目的贡献和发展方面进行分析时,应该将这部分数据减去。这样的话,在阿里团队名下列出的一些知名项目,如复刻自 CocoaPods/Specs 的 Specs 项目拥有 14 万之多的提交数,但是阿里本身并没有对其复刻的版本进行任何提交;又比如阿里的重点项目 AliSQL 是基于 MySQL 官方版本的一个衍生版,因此其近 10万的提交数中绝大部分是 来自MySQL 发展多年来积累下的提交数量,本身阿里在将其衍生为 AliSQL 之后,只有 52 个提交数;同样 AliSQLBackup 的 10 万多个提交数也是来自于上游项目,阿里几乎没有做过更新提交,并且也停止维护两年了;因此,这些项目在统计时,我们会从阿里复刻或衍生该项目时开始计数提交数量。

当然,我们知道,仅仅以提交数来评估一个项目的活跃度是片面的,比如说,上述的 AliSQL 虽然只有 52 个提交,但是其由于开发模式和审慎态度的缘故,往往一次提交的代码量比较多,其中某次提交行数高达 5 万多行,而对上游 MariaDB 的贡献虽然只有三次提交,但是已经占到了总代码量的 1%。鉴于此,我们会不仅仅从提交数,还从复刻数、问题数等多个方面来综合进行观察。

下表是阿里旗下开源的提交数前十的项目:

项目

创建天数

提交数

员工提交数

社区提交数

日均提交数

ant-design

730天 8567 2494 5973 11.60
weex 398天 5779 804 4975 14.52
druid 1987天 4056 1067 2989 2.04
fastjson 1987天 1883 834 1049 0.95
LuaViewSDK 461天 1195 1189 6 2.59
rax 180天 1001 768 233 5.56
tengine 1848天 907 611 296 0.49
dubbo 1758天 414 370 44 0.24
freeline 252天 377 227 150 1.50
anyproxy 975天 369 352 17 0.38

我们可从上表中看到,阿里旗下开源的项目提交数最多的是 ant-design 项目,这是蚂蚁金服旗下推出的一种 UI 设计语言,在开源两年来,得到了快速的发展。我们可以看到,其提交数约计比第二名高过 1/3,其中社区提交数是成员提交数的两倍,并且日均提交数也达到了很高的水平。

第二名是 weex 项目,这是一个用于构建跨平台移动应用 UI 的框架,前些时间刚刚捐献给 Apache 基金会孵化管理。项目开源于 2016 年底,目前已有近 6 千提交,其中社区提交数量是阿里员工的提交数的 6 倍!而且,日均提交数竟然达到了 14.52 个,其发展速度还要超过了第一名 ant-design。这代表了社区强烈的参与意愿,并且该项目得到了社区的广泛应用。

第三名是 druid 项目,这是一个是“为监控而生的数据库连接池”,自称“是 Java 语言中最好的数据库连接池”。采用 Java 开发,也是阿里重点发展的项目之一,2011 年底开源发布,目前已经有 4 千余个提交,代码迭代很快。而且,非阿里员工的提交数量是阿里员工的提交数量的三倍左右

应该说,这些排名较高的项目的活跃度都不错,其中只有一个项目是更新于半年前的,其它的项目都在近期有不同程度的更新维护。

从上面的项目的提交来源看,提交数最高前三名来自社区的提交要超过了阿里员工的提交,甚至远远超过,这说明这三个项目得到了社区的普遍支持,我们在后面分析复刻情况时也可以看到,这两个项目的复刻数都很高。而之后排名的项目,却呈现了另外一种趋势,即来自阿里员工的提交数要超过或远超来自社区的提交数,相应的表示出这些项目在社区的受欢迎程度要差一些。

从整体的这些项目来看,各个项目的提交数明显呈长尾样分布:

 

项目提交数分布 

而且,我们可以看到,从提交数排名第 8 位的项目开始,提交数呈断崖式下降,但是整体的以正态分布呈现:

 

项目提交数分布(去除前 7 名)

从上述分布上来看,阿里旗下的开源项目的发展情况正常,既有活跃项目,也有消亡项目。

我们判断,阿里对其开源项目的管理处于自由生长状况,并没有从统一管理的层面来督导、辅导各个开源项目的发展,也没有对陷入消亡的项目进行进一步处置和收尾,也就是说,一些烂尾的项目并没有进行妥善处置。

为了验证这个结论,我们来看一下阿里旗下开源的项目的最近更新时间。

项目的最近更新时间

抛开一些项目内的无关紧要的更新(如修订一些 README,pom.xml 等),我们发现这 133 个项目当中有 60 个项目更新于一年前,其中更新于 4 年前及以上的有 30 个。可见有不少遗留项目缺乏处置。

当然,根据上图也可以反映出近年来阿里的开源项目整体的发展趋势要超过过去几年。

项目的拉取请求数和问题数

GitHub 开创性的使用了拉取请求pull request(经常简称为 PR)的方式来为开源项目提供社区协作支持。无论是项目成员还是外部合作者,以及偶尔的关注该项目的贡献者,都可以通过发起拉取请求来给某个项目提交补丁,项目维护人员可以对该拉取请求进行审核,如果审核通过,就会“拉取”该合并请求到项目中,从而将贡献者提交的代码融合到项目代码之中。

作为社区贡献者,对一个项目发起贡献的主要方式就是给该项目发起拉取请求。虽然也有不少项目要求几乎所有成员都必须以拉取请求的方式来提交其代码,而不允许直接提交到仓库中,但是通常而言,一个项目的拉取请求数可以从侧面反映出一个项目的社区(外部)参与程度。

而对一个项目作出贡献的方式不仅仅是贡献代码,还有对项目中发现的问题、缺失功能所提交的报告也是一种重要的方式,这些信息在 GitHub 中统一被称之为问题issue

每个拉取请求和问题,都会被项目维护者进行审核,并进行处置。比如对于拉取请求,可以接受、可以拒绝;对于问题,可以回复、也可以忽略/关闭。

一般来说,活跃的项目其拉取请求数量和问题数量也会越大,但是我们这里不去做这些数量的排名,我们感兴趣的是,这些拉取请求和问题中,开放和关闭的比例情况。

如下表,我们列出了拉取请求未接纳比例最高的前十名(这里略去了拉取请求数低于10的项目)。

项目 开放 PR 关闭 PR PR PR 开放比
LuaViewSDK 8 3 11 72.73%
DataX 15 16 31 48.39%
dubbo 57 71 128 44.53%
RocketMQ 18 32 50 36.00%
nginx-http-concat 6 12 18 33.33%
jstorm 17 53 70 24.29%
anyproxy 9 30 39 23.08%
atlas 4 17 21 19.05%
otter 1 11 12 8.33%
nginx-tfs 1 13 14 7.14%

我们可以看到,这些项目中拉取请求未接纳的比例最高的有的高达 70% 以上,当然,另外一方面,我们也看到了这些项目的拉取请求数都不高。这可以反映出该项目的社区参与积极性不高。 

但是几个提交数比较高的项目,除个别情况外,其拉取请求未接纳的比例都很低: 

项目 PR 开放比 提交数
ant-design 0.10% 8467
weex 1.03% 5779
druid 0.50% 4056
fastjson 0.00% 1883
LuaViewSDK 72.73% 1195
rax 3.82% 1001
tengine 6.83% 907
dubbo 44.53% 414
freeline 0.00% 377
anyproxy 23.08% 369
terraform-provider 0.00% 355

这说明这些项目的活跃不是没有道理的。

究竟是由于社区参与积极性不高导致的未接纳比例高,还是反之,我们认为或许是彼此互相影响导致的。 

再让我们来看看问题数。

项目 全部问题 开放问题 关闭问题 问题开放比
oceanbase 12 12 0 100.00%
mirrors 46 45 1 97.83%
ons 12 11 1 91.67%
simpleimage 15 13 2 86.67%
LVS 25 21 4 84.00%
tfs 23 19 4 82.61%
taokeeper 31 23 8 74.19%
nginx-http-concat 44 29 15 65.91%
dubbo 423 273 150 64.54%
AndFix 341 219 122 64.22%
DataX 183 113 70 61.75%

我们可以看到,有些项目,居然所有的问题都没有处置,比如 oceanbase,甚至连被寄予厚望的 dubbo 和 DataX 也有相当比例的问题没有解决——难怪有人对阿里开源项目烂尾颇有微词。

那么我们同样来看看几个活跃项目的问题解决比例:

项目 全部问题 问题开放比 提交数
ant-design 5860 1.69% 8467
weex 2977 12.83% 5779
druid 1672 25.90% 4056
fastjson 1137 23.13% 1883
LuaViewSDK 76 25.00% 1195
rax 218 6.88% 1001
tengine 884 17.99% 907
dubbo 423 64.54% 414
freeline 758 3.30% 377
anyproxy 161 37.27% 369

我们可以看到,这些活跃项目的问题解决比例还是比较高的。

项目的复刻数

下面我们来看看这些项目的复刻数。前面我们说过,开源项目的复刻数代表了(外部)社区参与该项目的积极性。因为复刻一个项目的意图可能有以下几种:

  • 保留(冻结)该项目当前的代码以做将来之用,以避免该项目出于种种原因被删除、关闭。
  • 要对该项目提交补丁(拉取请求),需要复刻一份,完成修改后发起拉取请求。
  • 意图衍生该项目,通常是为了发展不同的方向。
  • 只是为了方便找到该项目?可能更习惯这种方式,而不是加以星标、关注等方式来标记该项目。

无论是哪种情况,我们可以看到,复刻这种行为基本上可以代表复刻者对该项目的积极参与意愿。

以下是阿里开源的项目中复刻数最高十个项目:

项目 创建天数 复刻数 日均复刻数 PR 全部问题
dubbo 1763天 7946 4.51 128 423
fastjson 1992天 3061 1.54 171 1137
druid 1992天 2946 1.48 801 1672
ant-design 730天 2659 3.63 1413 5860
RocketMQ 894天 2108 2.36 50 479
weex 402天 1918 4.77 1360 2977
tengine 1853天 1532 0.83 571 884
jstorm 1322天 1531 1.16 70 485
AndFix 580天 1326 2.29 7 341
canal 1555天 1168 0.75 42 291

从上面我们可以看到,复刻数最高的项目是一个名为 dubbo 的分布式、高性能的 RPC 框架,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo 的复刻数远高于第二名的 fastjson,但是其相应的拉取请求数和问题数却不相称的低——这代表了什么?社区或业界觉得这个项目有价值,但是鲜于应用场景,也缺乏参与回馈的能力(或动力?)。

而第二名,fastjson 却显著的问题数比较高,这表明社区在大量使用该项目,因此产生(发现)的问题或需求也比较多。但是其拉取请求数却没有与问题数相应的提高,侧面说明了该项目本身参与开发的难度较高。

第三名 druid,是一个 java 的数据库连接池,其问题数和拉取请求数都很高,我们认为它的活跃度和社区参与程度都很健康。

第四到六名 ant-design 、RocketMQ 、 weex 都是阿里重点发展的项目,并且后两者都捐赠给了 apache 基金会孵化管理,而且 weex 的发展更是后来居上,就拉取请求和问题数来说,weex 的发展更健康一些。

那么,结论呢?可以大致的看出,复刻数较高的项目其日均复刻数也存在较大的波动,说明其发展速度不一,但是复刻数可以作为一个项目是否健康发展的指标之一,但是该指标应和拉取请求数和问题数综合来看。

项目的星标数和关注数

对 GitHub 上的开源项目的观察久已有之,但是人们一般习惯于按项目的星标数来进行排名。不过,现在随着 GitHub 的日益流行,星标这种成本低廉简单操作已经逐渐失去了作为排名依据的意义,以至于一些 markdown 项目(也称为 awesome 项目)虽然并无代码,仅仅一篇以 markdown 格式提交的资源大全,也往往取得了不错的星标数。我们认为,对于开源项目,尤其是特指代码方面的开源项目时,其星标数并不应该与那些 markdown 项目进行横向比较。当然,同样作为开源代码项目,星标数还是有一定的参考价值的。

我们来看看阿里旗下开源项目的星标数前十的项目:

项目 创建天数 星标数 关注数 日均星标数
weex 402天 13864 1992 34.49
ant-design 730天 12745 680 17.45
fastjson 1992天 8674 945 4.35
dubbo 1763天 8159 1765 4.63
druid 1992天 6014 1125 3.02
tengine 1853天 5384 778 2.91
AndFix 580天 5167 438 8.91
atlas 48天 4068 291 84.75
RocketMQ 894天 3652 727 4.09
freeline 257天 3511 195 13.66
dexposed 657天 3475 392 5.29

啊哦,不出意外,这些项目基本上还是和复刻数排名比较相近。Weex 在该项排名中又取得了第一。令我们比较感兴趣的是,排名稍后的几个项目的开源时间并不算长。让我们来以日均星标数排名看看,这回我们多取几名:

项目 创建天数 星标数 关注数 日均星标数
atlas 48天 4068 291 84.75
vlayout 49天 3250 120 66.33
UltraViewPager 19天 903 23 47.53
weex 402天 13864 1992 34.49
Tangram-iOS 19天 455 26 23.95
Tangram-Android 19天 401 30 21.11
LazyScrollView 46天 842 30 18.30
ant-design 730天 12745 680 17.45
rax 185天 2755 119 14.89
freeline 257天 3511 195 13.66
ARouter 124天 1551 60 12.51
AndFix 580天 5167 438 8.91
BeeHive 259天 1908 98 7.37
AliSQL 264天 1877 375 7.11
dexposed 657天 3475 392 5.29
dubbo 1763天 8159 1765 4.63
fastjson 1992天 8674 945 4.35
RocketMQ 894天 3652 727 4.09
LuaViewSDK 466天 1821 183 3.91
HandyJSON 209天 810 41 3.88

发现什么没有?日均星标数的前几名,或者说大多数都是相当年轻的开源项目,其星标增长速度要让几个已经开源了几年的项目瞠目其后。我们判断,这说明阿里现在在开源方面已经处于高调宣传模式,对于新开源的项目,都有一波持续和明确的传播意图。但是我们认为,作为一家商业企业,这也代表了阿里已经将开源作为一个主流战略、也是其企业文化和品牌形象推广的重要方面,那么是不是代表着阿里以后的开源项目的支持力度和维护热情会更高、更持久呢? 

总结

以上,我们通过对阿里旗下开源的多个项目的各个指标进行了横向和纵向的比较,从中也观察到了一些有趣的现象。但是这些数据并不能完全的反映出一个一致的结论,只是,从整体来看我们认为,阿里巴巴旗下的开源项目,正在以更快、更主动的方式在发展,至于说是否还会出现之前的那种开源之后被抛弃的情况,下定论还为时尚早。这或许要看阿里的开源委员会是否能够制定更宏观的发展战略而定。

不过,无论如何,我们欣喜的看到,阿里在践行开源理念、积极主动的拥抱、回馈开源方面,取得了瞩目的成就。我们也期待国内的更多互联网企业、IT 企业可以在开源方面有更多的实际行动,让中国这个世界上除了美国之外第二大的互联网大国在开源方面也取得相应的成就。


完美阅读及发表评论,请猛击:https://linux.cn/article-8443-1.html?utm_source=rss&utm_medium=rss

极客漫画:软件测试

$
0
0

Software Testing

这幅漫画吐槽了目前的软件开发的乱象:

软件开发的不规范,在开发者自己的电脑上运行正常,在质量检测团队测试时就出现了 Warning,在项目经理测试时已经发生了蓝屏,当用户测试时,发生了“核爆”。

这里讽刺了两件事:

1、开发者开发时,不注重软件质量,无法保证软件在不同环境下的一致性。当然,锅不能完全开发者来背。同时,也是 Docker 这样的产品的用武之地。

2、当质量监测团队出现了 Warning ,项目管理出现了蓝屏的情况下, 问题一级级放大,等到交付给了用户,导致在用户那里出现了“核爆”这样的巨大危害。


via: https://turnoff.us/geek/software-test/

作者:Daniel Stori 译者&点评:Bestony 校对&合成:GHLandy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8442-1.html?utm_source=rss&utm_medium=rss

你和 Linux 极客只差一个 LFS

$
0
0

很多同学都已经学习了 Linux ,可能已经在自己的机器上安装过 Linux,甚至都能搭建个简单的个人博客,也有可能编译部署过邮件服务器之类的软件,可是感觉仍然对 Linux 有点摸不着,颇有隔靴挠痒的感受。

总是好奇 Linux 内核是怎么回事,究竟里面有点什么?总是好奇 Linux 是怎么启动起来的,那个什么 GRUB 怎么知道读取引导信息?总是好奇设备怎么就可以被当成文件操作,为什么可以从 /proc 读到进程的信息?总是好奇如何才能构建一个操作系统,从无到有的做成一个可引导的 Linux 启动盘?

不用羡慕那些说起这些就头头是道是 Linux 极客们,其实你和他们之间只是差一个 LFS 而已。

什么?请听我娓娓道来~

LFS 是什么?

LFS(英文 Linux From Scratch 的缩写),中文释意为“从零开始构建的 Linux”。好吧!看起来很高大上 OTZ,可它到底是什么东西呢?感觉上它好像经常和 RedHat,Debain 这类发行版混在一起,那它应该也是个发行版吧!

这样理解其实也没有什么不对,但比起发行版来,它其实更像一本书。书本只提供知识,它只教你做,不会帮你做。这才是 LFS 和别的发行版的本质区别。这本书可以教你如何亦步亦趋的从零开始搭建一个具体而微的 Linux 系统,没错,就是从零开始,是不是有一种上帝视角的感觉呢?

那么在哪儿可以找到这本“书”呢?你可以在网上找到电子版,当然,乐意的话,你可以打印出来——不过,我认为这没必要。你只需要按照这本书的指导,一个字母都不要敲错,你就能在它手把手地指导下,打磨出你自己的 Linux 系统啦!

LFS 是本好书吗?

是的,LFS 绝对配得上称为一本好书,或者说一本好教材。市面上,很难再找到一本如此具体又如此精炼的教材了。

首先,它并不是只是讲讲简单概念,它很具体,具体到就是一个例子,一个告诉你怎么亲手构建出属于自己的 Linux 系统的例子。

其次,它很精炼,它的精炼表现在两个方面:系统构建出来不臃肿;文字描述很精炼。

最后还有一点,这一点至关重要。尽管文字的描述非常精炼,甚至是精炼到枯燥,但是作为一本教材,作者无时无刻不再想尽办法,让你学到东西。无论是编译指令下方各个参数的介绍,还是软件包安装小节下方软件包内容的介绍,作者真的是想尽办法的试图把知识传递给读者。

LFS 没有缺点吗?

那自然是有的,可以原封不动的照抄上面的优点。辩证的看待这些优点,你就会发现这些优点是有代价的。

首先,由于这个例子过于生动形象,所以篇幅不小,快则一两天,慢可能要一两周你才能跟着把系统构建完。一次做完你也不见得能把知识完全消化。

然后,刚才我也提到了,为了让内容更精炼,更多的只是叙述和说明,并不会夹杂太多作者的思想和经验,看起来显得很枯燥。

最后,相信大家都不是太喜欢看教科书。

当然,其实还有一个缺点,会给我们的学习带来比较大的阻力,这个我们后面会提到。

LFS 的定位

盘点了优缺点以后 LFS 的定位就很清晰了,它就是一本书,一本教科书。所以你不能要求它像小说般有趣。而这本书的受众是,广大的程序员,学生,Linux 用户,以及任何一个对此感兴趣的人。

如何开始?

如果你英文水平尚可的话,请直达 LFS 官网: http://www.linuxfromscratch.org/lfs/ ,开始你的上帝之旅吧。

如果你希望阅读中文的话,可以看看我们已经完成的一个略旧的版本:LFS 7.7-systemd,关于这个版本的介绍,可以看这里

最新的 LFS 8.0 呢?不要着急,我们正在翻译中。请往下看:

LFS 中文维护

之前提到,会给我们的学习带来很大的阻力的缺点,就是这本书的原文是英文。

作为母语是中文的大家来说,阅读大段的英文并不是一件多么享受的事。LCTT 之前已经翻译过一版简体中文的 LFS 7.7。时间过的飞快,现在最新的版本已经是 8.0 了。而我们现在正在着手翻译 LFS 8.0 的手册,欢迎你也来一起参与。边亲手搭建,边翻译成平实可靠的文字,还有比这更有意思的事情吗?

(以下是广告时间……)对翻译 LFS 手册感兴趣的同学,翻译项目在此: https://github.com/LCTT/LFS-BOOK ,你也可以加入下面的微信群和我们联系。

希望学习 LFS 和对 LFS 翻译贡献的同学,请加入我们的 LFS 微信群,扫描如下二维码:

那么,你准备成为一名 Liunx 极客了吗?


完美阅读及发表评论,请猛击:https://linux.cn/article-8438-1.html?utm_source=rss&utm_medium=rss

GoTTY:把你的 Linux 终端放到浏览器里面

$
0
0

GoTTY 是一个简单的基于 Go 语言的命令行工具,它可以将你的终端(TTY)作为 web 程序共享。它会将命令行工具转换为 web 程序。

它使用 Chrome OS 的终端仿真器(hterm)来在 Web 浏览器上执行基于 JavaScript 的终端。重要的是,GoTTY 运行了一个 Web 套接字服务器,它基本上是将 TTY 的输出传输给客户端,并从客户端接收输入(即允许客户端的输入),并将其转发给 TTY。

它的架构(hterm + web socket 的想法)灵感来自 Wetty 项目,它使终端能够通过 HTTP 和 HTTPS 使用。

先决条件

你需要在 Linux 中安装 GoLang (Go 编程语言) 环境来运行 GoTTY。

如何在 Linux 中安装 GoTTY

如果你已经有一个可以工作的 Go 语言环境,运行下面的 go get 命令来安装它:

# go get github.com/yudai/gotty

上面的命令会在你的 GOBIN 环境变量中安装 GOTTY 的二进制,尝试检查下是否如此:

# $GOPATH/bin/

Check GOBIN Environment

检查 GOBIN 环境

如何在 Linux 中使用 GoTTY

要运行它,你可以使用 GOBIN 环境变量并用命令补全:

# $GOBIN/gotty

另外,要不带完整命令路径运行 GoTTY 或其他 Go 程序,使用 export 命令将 GOBIN 变量添加到 ~/.profile 文件中的 PATH 环境变量中。

export PATH="$PATHGOBIN"

保存文件并关闭。接着运行 source 来使更改生效:

# source ~/.profile

运行 GoTTY 命令的常规语法是:

Usage: gotty [options] <Linux command here> [<arguments...>]

现在用 GoTTY 运行任意命令,如 df 来从 Web 浏览器中查看系统分区空间及使用率。

# gotty df -h

GoTTY 默认会在 8080 启动一个 Web 服务器。在浏览器中打开 URL:http://127.0.0.1:8080/,你会看到运行的命令仿佛运行在终端中一样:

Gotty Linux Disk Usage

Gotty 查看 Linux 磁盘使用率

如何在 Linux 中自定义 GoTTY

你可以在 ~/.gotty 配置文件中修改默认选项以及终端,如果该文件存在,它会在每次启动时加载这个文件。

这是由 getty 命令读取的主要自定义文件,因此,按如下方式创建:

# touch ~/.gotty

并为配置选项设置你自己的有效值(在此处查找所有配置选项)以自定义 GoTTY,例如:

// Listen at port 9000 by default
port = "9000"
// Enable TSL/SSL by default
enable_tls = true
// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
font_size = 5,
background_color = "rgb(16, 16, 32)"
}

你可以使用命令行中的 --html 选项设置你自己的 index.html 文件:

# gotty --index /path/to/index.html uptime

如何在 GoTTY 中使用安全功能

由于 GoTTY 默认不提供可靠的安全保障,你需要手动使用下面说明的某些安全功能。

允许客户端在终端中运行命令

请注意,默认情况下,GoTTY 不允许客户端输入到TTY中,它只支持窗口缩放。

但是,你可以使用 -w--permit-write 选项来允许客户端写入 TTY,但是并不推荐这么做因为会有安全威胁。

以下命令会使用 vi 命令行编辑器在 Web 浏览器中打开文件 fossmint.txt 进行编辑:

# gotty -w vi fossmint.txt

以下是从 Web 浏览器看到的 vi 界面(像平常一样使用 vi 命令):

Gotty Web Vi Editor

Gotty Web Vi 编辑器

使用基本(用户名和密码)验证运行 GoTTY

尝试激活基本身份验证机制,这样客户端将需要输入指定的用户名和密码才能连接到 GoTTY 服务器。

以下命令使用 -c 选项限制客户端访问,以向用户询问指定的凭据(用户名:test 密码:@67890):

# gotty -w -p "9000" -c "test@67890" glances

Gotty with Basic Authentication

使用基本验证运行 GoTTY

Gotty 生成随机 URL

限制访问服务器的另一种方法是使用 -r 选项。GoTTY 会生成一个随机 URL,这样只有知道该 URL 的用户才可以访问该服务器。

还可以使用 -title-format "GoTTY – {{ .Command }} ({{ .Hostname }})" 选项来定义浏览器标题。glances 用于显示系统监控统计信息:

# gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

以下是从浏览器中看到的上面的命令的结果:

Gotty Random URL for Glances Linux Monitoring

使用 Gotty 随机 URL 用于 Glances 系统监控

带有 SSL/TLS 使用 GoTTY

因为默认情况下服务器和客户端之间的所有连接都不加密,当你通过 GoTTY 发送秘密信息(如用户凭据或任何其他信息)时,你需要使用 -t--tls 选项才能在会话中启用 TLS/SSL:

默认情况下,GoTTY 会读取证书文件 ~/.gotty.crt 和密钥文件 ~/.gotty.key,因此,首先使用下面的 openssl 命令创建一个自签名的证书以及密钥( 回答问题以生成证书和密钥文件):

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt

按如下所示,通过启用 SSL/TLS,以安全方式使用 GoTTY:

# gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

与多个客户端分享你的终端

你可以使用终端复用程序来与多个客户端共享一个进程,以下命令会启动一个名为 gotty 的新 tmux 会话来运行 glances(确保你安装了 tmux):

# gotty tmux new -A -s gotty glances

要读取不同的配置文件,像下面那样使用 –config "/path/to/file" 选项:

# gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

要显示 GoTTY 版本,运行命令:

# gotty -v

访问 GoTTY GitHub 仓库以查找更多使用示例:https://github.com/yudai/gotty

就这样了!你有尝试过了吗?如何知道 GoTTY 的?通过下面的反馈栏与我们分享你的想法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,即将成为 Linux SysAdmin 和网络开发人员,目前是 TecMint 的内容创作者,他喜欢在电脑上工作,并坚信分享知识。


via: http://www.tecmint.com/gotty-share-linux-terminal-in-web-browser/

作者:Aaron Kili 译者:geekpi 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8445-1.html?utm_source=rss&utm_medium=rss

Python 是慢,但我无所谓

$
0
0

为牺牲性能追求生产率而呐喊

让我从关于 Python 中的 asyncio 这个标准库的讨论中休息一会,谈谈我最近正在思考的一些东西:Python 的速度。对不了解我的人说明一下,我是一个 Python 的粉丝,而且我在我能想到的所有地方都积极地使用 Python。人们对 Python 最大的抱怨之一就是它的速度比较慢,有些人甚至拒绝尝试使用 Python,因为它比其他语言速度慢。这里说说为什么我认为应该尝试使用 Python,尽管它是有点慢。

速度不再重要

过去的情形是,程序需要花费很长的时间来运行,CPU 比较贵,内存也很贵。程序的运行时间是一个很重要的指标。计算机非常的昂贵,计算机运行所需要的电也是相当贵的。对这些资源进行优化是因为一个永恒的商业法则:

优化你最贵的资源。

在过去,最贵的资源是计算机的运行时间。这就是导致计算机科学致力于研究不同算法的效率的原因。然而,这已经不再是正确的,因为现在硅芯片很便宜,确实很便宜。运行时间不再是你最贵的资源。公司最贵的资源现在是它的员工时间。或者换句话说,就是你。把事情做完比把它变快更加重要。实际上,这是相当的重要,我将把它再次放在这里,仿佛它是一个引文一样(给那些只是粗略浏览的人):

把事情做完比快速地做事更加重要。

你可能会说:“我的公司在意速度,我开发一个 web 应用程序,那么所有的响应时间必须少于 x 毫秒。”或者,“我们失去了客户,因为他们认为我们的 app 运行太慢了。”我并不是想说速度一点也不重要,我只是想说速度不再是最重要的东西;它不再是你最贵的资源。

速度是唯一重要的东西

当你在编程的背景下说 速度 时,你通常是说性能,也就是 CPU 周期。当你的 CEO 在编程的背景下说 速度 时,他指的是业务速度,最重要的指标是产品上市的时间。基本上,你的产品/web 程序是多么的快并不重要。它是用什么语言写的也不重要。甚至它需要花费多少钱也不重要。在一天结束时,让你的公司存活下来或者死去的唯一事物就是产品上市时间。我不只是说创业公司的想法 -- 你开始赚钱需要花费多久,更多的是“从想法到客户手中”的时间期限。企业能够存活下来的唯一方法就是比你的竞争对手更快地创新。如果在你的产品上市之前,你的竞争对手已经提前上市了,那么你想出了多少好的主意也将不再重要。你必须第一个上市,或者至少能跟上。一但你放慢了脚步,你就输了。

企业能够存活下来的唯一方法就是比你的竞争对手更快地创新。

一个微服务的案例

像 Amazon、Google 和 Netflix 这样的公司明白快速前进的重要性。他们创建了一个业务系统,可以使用这个系统迅速地前进和快速的创新。微服务是针对他们的问题的解决方案。这篇文章不谈你是否应该使用微服务,但是至少要理解为什么 Amazon 和 Google 认为他们应该使用微服务。

微服务本来就很慢。微服务的主要概念是用网络调用来打破边界。这意味着你正在把使用的函数调用(几个 cpu 周期)转变为一个网络调用。没有什么比这更影响性能了。和 CPU 相比较,网络调用真的很慢。但是这些大公司仍然选择使用微服务。我所知道的架构里面没有比微服务还要慢的了。微服务最大的弊端就是它的性能,但是最大的长处就是上市的时间。通过在较小的项目和代码库上建立团队,一个公司能够以更快的速度进行迭代和创新。这恰恰表明了,非常大的公司也很在意上市时间,而不仅仅只是只有创业公司。

CPU 不是你的瓶颈

如果你在写一个网络应用程序,如 web 服务器,很有可能的情况会是,CPU 时间并不是你的程序的瓶颈。当你的 web 服务器处理一个请求时,可能会进行几次网络调用,例如到数据库,或者像 Redis 这样的缓存服务器。虽然这些服务本身可能比较快速,但是对它们的网络调用却很慢。这里有一篇很好的关于特定操作的速度差异的博客文章。在这篇文章里,作者把 CPU 周期时间缩放到更容易理解的人类时间。如果一个单独的 CPU 周期等同于 1 秒,那么一个从 California 到 New York 的网络调用将相当于 4 年。那就说明了网络调用是多少的慢。按一些粗略估计,我们可以假设在同一数据中心内的普通网络调用大约需要 3 毫秒。这相当于我们“人类比例” 3 个月。现在假设你的程序是高 CPU 密集型,这需要 100000 个 CPU 周期来对单一调用进行响应。这相当于刚刚超过 1 天。现在让我们假设你使用的是一种要慢 5 倍的语言,这将需要大约 5 天。很好,将那与我们 3 个月的网络调用时间相比,4 天的差异就显得并不是很重要了。如果有人为了一个包裹不得不至少等待 3 个月,我不认为额外的 4 天对他们来说真的很重要。

上面所说的终极意思是,尽管 Python 速度慢,但是这并不重要。语言的速度(或者 CPU 时间)几乎从来不是问题。实际上谷歌曾经就这一概念做过一个研究,并且他们就此发表过一篇论文。那篇论文论述了设计高吞吐量的系统。在结论里,他们说到:

在高吞吐量的环境中使用解释性语言似乎是矛盾的,但是我们已经发现 CPU 时间几乎不是限制因素;语言的表达性是指,大多数程序是源程序,同时它们的大多数时间花费在 I/O 读写和本机的运行时代码上。而且,解释性语言无论是在语言层面的轻松实验还是在允许我们在很多机器上探索分布计算的方法都是很有帮助的,

再次强调:

CPU 时间几乎不是限制因素。

如果 CPU 时间是一个问题怎么办?

你可能会说,“前面说的情况真是太好了,但是我们确实有过一些问题,这些问题中 CPU 成为了我们的瓶颈,并造成了我们的 web 应用的速度十分缓慢”,或者“在服务器上 X 语言比 Y 语言需要更少的硬件资源来运行。”这些都可能是对的。关于 web 服务器有这样的美妙的事情:你可以几乎无限地负载均衡它们。换句话说,可以在 web 服务器上投入更多的硬件。当然,Python 可能会比其他语言要求更好的硬件资源,比如 c 语言。只是把硬件投入在 CPU 问题上。相比于你的时间,硬件就显得非常的便宜了。如果你在一年内节省了两周的生产力时间,那将远远多于所增加的硬件开销的回报。

那么,Python 更快一些吗?

这一篇文章里面,我一直在谈论最重要的是开发时间。所以问题依然存在:当就开发时间而言,Python 要比其他语言更快吗?按常规惯例来看,我、google 还有其他几个人可以告诉你 Python 是多么的高效。它为你抽象出很多东西,帮助你关注那些你真正应该编写代码的地方,而不会被困在琐碎事情的杂草里,比如你是否应该使用一个向量或者一个数组。但你可能不喜欢只是听别人说的这些话,所以让我们来看一些更多的经验数据。

在大多数情况下,关于 python 是否是更高效语言的争论可以归结为脚本语言(或动态语言)与静态类型语言两者的争论。我认为人们普遍接受的是静态类型语言的生产力较低,但是,这有一篇优秀的论文解释了为什么不是这样。就 Python 而言,这里有一项研究,它调查了不同语言编写字符串处理的代码所需要花费的时间,供参考。

在上述研究中,Python 的效率比 Java 高出 2 倍。有一些其他研究也显示相似的东西。 Rosetta Code 对编程语言的差异进行了深入的研究。在论文中,他们把 python 与其他脚本语言/解释性语言相比较,得出结论:

Python 更简洁,即使与函数式语言相比较(平均要短 1.2 到 1.6 倍)  

普遍的趋势似乎是 Python 中的代码行总是更少。代码行听起来可能像一个可怕的指标,但是包括上面已经提到的两项研究在内的多项研究表明,每种语言中每行代码所需要花费的时间大约是一样的。因此,限制代码行数就可以提高生产效率。甚至 codinghorror(一名 C# 程序员)本人写了一篇关于 Python 是如何更有效率的文章

我认为说 Python 比其他的很多语言更加的有效率是公正的。这主要是由于 Python 有大量的自带以及第三方库。这里是一篇讨论 Python 和其他语言间的差异的简单的文章。如果你不知道为何 Python 是如此的小巧和高效,我邀请你借此机会学习一点 python,自己多实践。这儿是你的第一个程序:

import __hello__

但是如果速度真的重要呢?

上述论点的语气可能会让人觉得优化与速度一点也不重要。但事实是,很多时候运行时性能真的很重要。一个例子是,你有一个 web 应用程序,其中有一个特定的端点需要用很长的时间来响应。你知道这个程序需要多快,并且知道程序需要改进多少。

在我们的例子中,发生了两件事:

  1. 我们注意到有一个端点执行缓慢。
  2. 我们承认它是缓慢,因为我们有一个可以衡量是否足够快的标准,而它没达到那个标准。

我们不必在应用程序中微调优化所有内容,只需要让其中每一个都“足够快”。如果一个端点花费了几秒钟来响应,你的用户可能会注意到,但是,他们并不会注意到你将响应时间由 35 毫秒降低到 25 毫秒。“足够好”就是你需要做到的所有事情。免责声明: 我应该说有一些应用程序,如实时投标程序,确实需要细微优化,每一毫秒都相当重要。但那只是例外,而不是规则。

为了明白如何对端点进行优化,你的第一步将是配置代码,并尝试找出瓶颈在哪。毕竟:

任何除了瓶颈之外的改进都是错觉。Any improvements made anywhere besides the bottleneck are an illusion. -- Gene Kim

如果你的优化没有触及到瓶颈,你只是浪费你的时间,并没有解决实际问题。在你优化瓶颈之前,你不会得到任何重要的改进。如果你在不知道瓶颈是什么前就尝试优化,那么你最终只会在部分代码中玩耍。在测量和确定瓶颈之前优化代码被称为“过早优化”。人们常提及 Donald Knuth 说的话,但他声称这句话实际上是他从别人那里听来的:

过早优化是万恶之源Premature optimization is the root of all evil

在谈到维护代码库时,来自 Donald Knuth 的更完整的引文是:

在 97% 的时间里,我们应该忘记微不足道的效率:过早的优化是万恶之源。然而在关 键的 3%,我们不应该错过优化的机会。 —— Donald Knuth

换句话说,他所说的是,在大多数时间你应该忘记对你的代码进行优化。它几乎总是足够好。在不是足够好的情况下,我们通常只需要触及 3% 的代码路径。比如因为你使用了 if 语句而不是函数,你的端点快了几纳秒,但这并不会使你赢得任何奖项。

过早的优化包括调用某些更快的函数,或者甚至使用特定的数据结构,因为它通常更快。计算机科学认为,如果一个方法或者算法与另一个具有相同的渐近增长(或称为 Big-O),那么它们是等价的,即使在实践中要慢两倍。计算机是如此之快,算法随着数据/使用增加而造成的计算增长远远超过实际速度本身。换句话说,如果你有两个 O(log n) 的函数,但是一个要慢两倍,这实际上并不重要。随着数据规模的增大,它们都以同样的速度“慢下来”。这就是过早优化是万恶之源的原因;它浪费了我们的时间,几乎从来没有真正有助于我们的性能改进。

就 Big-O 而言,你可以认为对你的程序而言,所有的语言都是 O(n),其中 n 是代码或者指令的行数。对于同样的指令,它们以同样的速率增长。对于渐进增长,一种语言的速度快慢并不重要,所有语言都是相同的。在这个逻辑下,你可以说,为你的应用程序选择一种语言仅仅是因为它的“快速”是过早优化的最终形式。你选择某些预期快速的东西,却没有测量,也不理解瓶颈将在哪里。

为您的应用选择语言只是因为它的“快速”,是过早优化的最终形式。

优化 Python

我最喜欢 Python 的一点是,它可以让你一次优化一点点代码。假设你有一个 Python 的方法,你发现它是你的瓶颈。你对它优化过几次,可能遵循这里那里的一些指导,现在,你很肯定 Python 本身就是你的瓶颈。Python 有调用 C 代码的能力,这意味着,你可以用 C 重写这个方法来减少性能问题。你可以一次重写一个这样的方法。这个过程允许你用任何可以编译为 C 兼容汇编程序的语言,编写良好优化后的瓶颈方法。这让你能够在大多数时间使用 Python 编写,只在必要的时候都才用较低级的语言来写代码。

有一种叫做 Cython 的编程语言,它是 Python 的超集。它几乎是 Python 和 C 的合并,是一种渐进类型的语言。任何 Python 代码都是有效的 Cython 代码,Cython 代码可以编译成 C 代码。使用 Cython,你可以编写一个模块或者一个方法,并逐渐进步到越来越多的 C 类型和性能。你可以将 C 类型和 Python 的鸭子类型混在一起。使用 Cython,你可以获得混合后的完美组合,只在瓶颈处进行优化,同时在其他所有地方不失去 Python 的美丽。

星战前夜的一幅截图:这是用 Python 编写的 space MMO 游戏。

当您最终遇到 Python 的性能问题阻碍时,你不需要把你的整个代码库用另一种不同的语言来编写。你只需要用 Cython 重写几个函数,几乎就能得到你所需要的性能。这就是星战前夜采取的策略。这是一个大型多玩家的电脑游戏,在整个架构中使用 Python 和 Cython。它们通过优化 C/Cython 中的瓶颈来实现游戏级别的性能。如果这个策略对他们有用,那么它应该对任何人都有帮助。或者,还有其他方法来优化你的 Python。例如,PyPy 是一个 Python 的 JIT 实现,它通过使用 PyPy 替掉 CPython(这是 Python 的默认实现),为长时间运行的应用程序提供重要的运行时改进(如 web 服务器)。

让我们回顾一下要点:

  • 优化你最贵的资源。那就是你,而不是计算机。
  • 选择一种语言/框架/架构来帮助你快速开发(比如 Python)。不要仅仅因为某些技术的快而选择它们。
  • 当你遇到性能问题时,请找到瓶颈所在。
  • 你的瓶颈很可能不是 CPU 或者 Python 本身。
  • 如果 Python 成为你的瓶颈(你已经优化过你的算法),那么可以转向热门的 Cython 或者 C。
  • 尽情享受可以快速做完事情的乐趣。

我希望你喜欢阅读这篇文章,就像我喜欢写这篇文章一样。如果你想说谢谢,请为我点下赞。另外,如果某个时候你想和我讨论 Python,你可以在 twitter 上艾特我(@nhumrich),或者你可以在 Python slack channel 找到我。


作者简介:

Nick Humrich -- 坚持采用持续交付的方法,并为之写了很多工具。同是还是一名 Python 黑客与技术狂热者,目前是一名 DevOps 工程师。

(题图:Pixabay,CC0)

via: https://medium.com/hacker-daily/yes-python-is-slow-and-i-dont-care-13763980b5a1

作者:Nick Humrich 译者:zhousiyu325 校对:jasminepeng

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8446-1.html?utm_source=rss&utm_medium=rss

极客漫画:气人的软件

$
0
0

气人的软件 1

annoying-software 1

软件:

“你总是能够听取他人的意见,

现在是不是为自己切身考虑下呢?

不管怎样,您的操作已经完成。”

——这软件真气人!

气人的软件 2

annoying-software 2

软件:

真的忘记了吗?这已经是您本周第三次忘记密码了!

您是不是该考虑吃药了!

——你才该吃药呢!

气人的软件 3

annoying-software 3

自作聪明的软件,屡屡让人发疯!

气人的软件 4

annoying-software 4

我觉得现在都用 LCD 显示器有一个好处就是,你可以一拳打破而不用担心骨折(流血那种事情不在我们的考虑之中~)。

好气呀!


via:

作者:Daniel Stori 译者:GHLandy 校对:wxy 合成:GHLandy 点评:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8447-1.html?utm_source=rss&utm_medium=rss


维护 VS Code 开源项目背后的那些事情

$
0
0

本文来自于知乎上《维护一个大型开源项目是怎样的体验?》中的 rebomix 的回答,转载已取得答主的授权。本文作者 rebomix 是微软重要的开源项目之一 Visual Studio Code (常简称 VS Code)的维护团队成员,在此分享了维护 VS Code 过程中的一些见闻和感想,可以让我们一窥这种由企业支持的大型开源项目是如何运作的。

也希望此文可以让国内对 VS Code 开发、使用感兴趣的同学更多的了解和参与 VS Code 的社区开发。

加入 Visual Studio Code 快一年,趁这个机会聊一聊开发和维护这个项目的感受。以下为个人理解,不代表公司也不代表团队。

项目

Visual Studio Code 的目标是做一个 Lightweight Editor,通过的扩展 api,让用户在 VS Code 中达到和 IDE 中接近的开发体验(效率)。

不过很多群众对 VS Code 有诸多误解,我先来一一解答

  1. “VS Code 师出 VS,是 VS 找了一群人来重写的,复用了很多 VS 的代码,等等“。
    很抱歉,并不是这样半毛钱关系也没有。VS Code 的核心代码,也就是 Microsoft/monaco-editor 是 Erich Gamma 2011 年加入微软后,招聘的一支“全新”的队伍进行开发的。Monaco editor 从一开始就是一个基于浏览器的编辑器,早期一直服务于各个微软系统中(比如 Visual Studio Online,OneDrive online)。招聘的这支队伍对于 Erich 来说并不是新的,因为大部分成员都是其原先 IBM 的老部下,其中几位大爷跟着 Erich 撸了二十多年代码了。
  2. "VS Code 是 Atom 的复刻,是对 Atom 的魔改,是 Atom 的一个主题!"
    很抱歉,并不是这样,但还是有几毛钱关系的。Monaco Editor 在经历几年的高光期,进入了一个小小的黑暗时代。这时候团队成员开始调研将 Monaco Editor 做成桌面应用,和 Atom 一样,我们首先关注到的就是 node-webkit。必须说 node-webkit 是业界的一缕清风,给这个产业带来了太多的可能性。当然最后我们选用了 atom-shell,也就是后来的 Electron。但就是这个 atom-shell,给大家带来了以上的误导。

最后,我们一定要寻根问祖的话,VS Code 应该是师出 Eclipse(同志们,哎你们怎么扭头走人了,别怕,我话没说完呢)。团队核心的几位大爷,早年就跟着 Erich,在写了几个 Editor/IDE 之后,创造了 Eclipse。正是因为见证了 Eclipse 的兴衰,所以这一次在设计 Monaco/VS Code 的时候,才会如此的克制。Extensibility 不好吗?当然好,但是 Eclipse 的弊端已经在一些竞争对手身上出现啦。

开发/维护

我 13 年加入微软后,就开始接触到 Monaco 了。在使用的过程中踩了一些坑,研究过代码,做过好一些扩展。所以在 VS Code 正式开源后以及上线 Marketplace 后,我就开始动手写一点插件和发 Pull Request。去年五月得空和团队结对编程了两个礼拜后,就加入了 VS Code。

VS Code 的开发几乎完全是公开的。早期我们还通过 User Voice 收集反馈,但我们早就把它关掉了,所有问题的处理都放在 GitHub 上。我们的 Yearly/Monthly plan 都以 issue 的形式呈现在 Microsoft/vscode 上,而我个人正常的开发节奏是这样的:

计划

在上一个 milestone 快结束、新的 milestone 开始的第一周,和老板沟通新的 milestone 自己想做的功能。以及自己要不要休假。

Debt Week

我们把新 Milestone 的一周当作 debt week,集中处理一些技术债,以及为一些插件做点微小的贡献。我一般会花一点时间在 Vim 插件以及我自己的 Ruby 插件上。

开发

这之后就是两到三周正常的开发。每天起床得先把自己头上的新 issue 都 triage 一遍,遇到紧急的得先修,不然就继续完成自己的 feature。

Inbox Tracking

我加入团队的时候,我们只有 1700 个左右的 issue,现在已经破 4000 了(大部分都是 feature request)。GitHub Inbox 在这种情况下是无用的,我们的做法是每周会有一名同事,负责 GitHub 的新 issue,assign 给合适的 owner。我已经当过三次 Inbox Tracker,只能用可怕来形容。每天一睁眼就是一百多个 issue 要处理,一点都不想起床。

Endgame

我们在 milestone 的最后一周 endgame 会对新 feature 进行各种花样的测试,对这个 milestone 关掉的所有 issue 进行验证。全部完成后,每个成员书写自己负责部分的 release note。最后 Endgame master 会到后台网站发布新的 Stable 版本。

印象深刻的事

当之无愧就是“在空闲时,VS Code 由于渲染闪烁的光标而占用了 13% 的 CPU”。VS Code 是基于 Electron 的,而 Electron 则基于 Chromium。这样的话,Chromium 的锅有时候得我们来背。

VS Code 里的编辑区域并不是 textarea ,全都是 mock 的,这也是主流做法,Ace、CodeMirror、Atom 无不例外。理由也很简单,要实现 Tokenize、高亮、Partial Render、Line Wrap,自己控制渲染肯定是最方便的。为了尽可能模拟 textarea,我们模拟了光标。最开始这个光标的跳动,是通过 JavaScript 来控制光标的 opacity。后来社区给我们贡献了一个 pull request,使用 CSS animation 来调整 opacity。实现上来说肯定是比 JavaScript 版本更优雅,同时也提供了四五种不同的光标跳动的选项。

但谁知道,Chromium 对于 CSS Animation 是有巨大的坑的。比如你写的 animation 是每秒改变一次 opacity,但是 Chromium 会根据刷新率(比如 60hz)来检测页面上的 animation。虽然我不知道 Chromium 做了什么,但是你可以看到每16ms,Chromium 就会吃掉一点你的 CPU 和 Battery


真的是一点办法没有。我们起初没有发现这个问题,直到 broccoli 的作者 Jo Liss 给我们发了 issue,并且在 Twitter 上爆我们,瞬间就成了 Twitter 上大新闻。连 Miguel de Icaza 都点赞了,真的是……

当时我刚吃完晚饭,但是由于这个事情在我的防区,我只好开电脑 troubleshoot。最后发现是 Chromium 的 bug,开了两年多了,我只好告诉 Jo Liss,这锅我们不背,但是我们会修的。

结果之后好事者把事情捅到了 HackerNews,瞬间成了当天大新闻,还上了 TheRegister 小报。所有人都开始讨论使用 Browser 技术做桌面应用是不是正确的选择,撕的不亦乐乎。

你们撕的倒是开心了,我那几天给各种老板解释什么是跳动的光标,忙的跟狗一样。好在后来 Chromium 的 PM lead Paul Irish 留言表示这是他们的 bug,算是完美收官了。

有没有什么奇葩的 issue 或者 PR?

  1. 你们猜大家看到中文写的 issue 会找谁来翻译?
  2. 有些朋友提交了 PR,根本不管你给的建议,自顾自的更新修改。这样的 PR 根本不可能 merge,但是我们给的尽可能 polite 的建议,有些朋友真的把它们只当成建议……
  3. 再一次说到跳动的光标,这个始作俑者是社区的朋友,看起来也是非常 neat 的实现,谁知道就踩了 Chromium 的坑呢……

关于中文 issue 的问题,VS Code contribution guide 写的是比较清楚的,请大家用英文提问。但是鉴于中文用户量巨大,加之人总有英文不够用的时候,VS Code 也会经常看到中文问题。我有这样一些想法:

  1. 写中文我个人觉得问题不大,毕竟 GitHub 是我们几乎唯一的反馈渠道,不能要求用户必须会英文。
  2. 写中文的确增加了我本人的工作量,所以能写英文,还是尽量写。
  3. 但如果你觉得需要严重的 Google Translate 的帮助,我建议还是写中文,并且 cc 我。不然可能翻译出来最后谁也看不明白,或者误解。
  4. 我老板问我,为啥中文 issue 几乎把所有东西都写在标题里,然后 issue 描述留空。我真的不知道该如何回答。如果用中文写 issue,并 cc 我,请保证把reproduce steps 写好,一步一步用中文写清楚,这总没难度吧?
  5. 如果第四步做不到,还要我解决问题,请考虑请我喝啤酒吧。

生活

大家都喜欢开源,但开源贡献者大部分时候是在做义务贡献。这么来看在微软搞 VS Code 就是一件愉快的事情,毕竟有人给你付工资让你做 open source。而且再也不用上班搞一套代码,回家之后私下自己在 GitHub 上面逛游,搞别的项目,上班和下班后可以在同一块土地上耕耘。

当然这样缺点也很明显,就是生活和工作往往难以分开。工作是一周五天,一天八小时,但是 GiHub issue 从来都是 7*24。遇到棘手的问题的时候,很难放任不管,哪怕已经回了家。不过也正是因为项目的特殊性,我们组还是有比较好的 remote 和自由工作时间的文化的。

(题图:Pixabay,CC0)


完美阅读及发表评论,请猛击:https://linux.cn/article-8448-1.html?utm_source=rss&utm_medium=rss

Windows 木马攻破嵌入式设备来安装 Mirai 恶意软件

$
0
0

该木马尝试使用出厂默认凭证对不同协议进行身份验证,如果成功则会部署 Mirai 僵尸程序。

Windows Trojan uses brute-force attacks against IoT devices.

攻击者已经开始使用 Windows 和 Android 恶意软件入侵嵌入式设备,这消除了人们广泛持有的想法,认为如果设备不直接暴露在互联网上,那么它们就不那么脆弱。

来自俄罗斯防病毒供应商 Doctor Web 的研究人员最近遇到了一个 Windows 木马程序,它使用暴力方法访问嵌入式设备,并在其上安装 Mirai 恶意软件。

Mirai 是一种用在基于 Linux 的物联网设备的恶意程序,例如路由器、IP 摄像机、数字录像机等。它主要通过使用出厂设备凭据来发动分布式拒绝服务 (DDoS) 攻击并通过 Telnet 传播。

Mirai 的僵尸网络在过去六个月里一直被用来发起最大型的 DDoS 攻击。它的源代码泄漏之后,恶意软件被用来感染超过 50 万台设备。

Doctor Web 发现,一旦在一台 Windows 上安装之后,该新木马会从命令控制服务器下载配置文件。该文件包含一系列 IP 地址,通过多个端口,包括 22(SSH)和 23(Telnet),尝试进行身份验证。

如果身份验证成功,恶意软件将会根据受害系统的类型。执行配置文件中指定的某些命令。在通过 Telnet 访问的 Linux 系统中,木马会下载并执行一个二进制包,然后安装 Mirai 僵尸程序。

如果按照设计或配置,受影响的设备不会从 Internet 直接访问,那么许多物联网供应商会降低漏洞的严重性。这种思维方式假定局域网是信任和安全的环境。

然而事实并非如此,其他威胁如跨站点请求伪造已经出现了多年。但 Doctor Web 发现的新木马似乎是第一个专门设计用于劫持嵌入式或物联网设备的 Windows 恶意软件。

Doctor Web 发现的新木马被称为 Trojan.Mirai.1,从它可以看到,攻击者还可以使用受害的计算机来攻击不能从互联网直接访问的物联网设备。

受感染的智能手机可以以类似的方式使用。卡巴斯基实验室的研究人员已经发现了一个 Android 程序,通过本地网络对路由器执行暴力密码猜测攻击。

(题图: Gerd Altmann / Pixabay)


via: http://www.csoonline.com/article/3168357/security/windows-trojan-hacks-into-embedded-devices-to-install-mirai.html

作者:Lucian Constantin 译者:geekpi 校对:jasminepeng

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8449-1.html?utm_source=rss&utm_medium=rss

使用 badIPs.com 保护你的服务器,并通过 Fail2ban 报告恶意 IP

$
0
0

这篇指南向你介绍使用 badips 滥用追踪器abuse tracker和 Fail2ban 保护你的服务器或计算机的步骤。我已经在 Debian 8 Jessie 和 Debian 7 Wheezy 系统上进行了测试。

什么是 badIPs?

BadIps 是通过 fail2ban 报告为不良 IP 的列表。

这个指南包括两个部分,第一部分介绍列表的使用,第二部分介绍数据提交。

使用 badIPs 列表

定义安全等级和类别

你可以通过使用 REST API 获取 IP 地址列表。

  • 当你使用 GET 请求获取 URL:https://www.badips.com/get/categories 后,你就可以看到服务中现有的所有不同类别。
  • 第二步,决定适合你的等级。 参考 badips 应该有所帮助(我个人使用 scope = 3):
  • 如果你想要编译一个统计信息模块或者将数据用于实验目的,那么你应该用等级 0 开始。
  • 如果你想用防火墙保护你的服务器或者网站,使用等级 2。可能也要和你的结果相结合,尽管它们可能没有超过 0 或 1 的情况。
  • 如果你想保护一个网络商店、或高流量、赚钱的电子商务服务器,我推荐你使用值 3 或 4。当然还是要和你的结果相结合。
  • 如果你是偏执狂,那就使用 5。

现在你已经有了两个变量,通过把它们两者连接起来获取你的链接。

http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}

注意:像我一样,你可以获取所有服务。在这种情况下把服务的名称改为 any

最终的 URL 就是:

https://www.badips.com/get/list/any/3

创建脚本

所有都完成了之后,我们就会创建一个简单的脚本。

1、 把你的列表放到一个临时文件。

2、 在 iptables 中创建一个chain(只需要创建一次)。(LCTT 译注:iptables 可能包括多个tables,表可能包括多个chains,链可能包括多个规则rules

3、 把所有链接到该链的数据(旧条目)刷掉。

4、 把每个 IP 链接到这个新的链。

5、 完成后,阻塞所有链接到该链的 INPUT / OUTPUT /FORWARD 请求。

6、 删除我们的临时文件。

为此,我们创建脚本:

cd /home/<user>/
vi myBlacklist.sh

把以下内容输入到文件。

#!/bin/sh
### based on this version http://www.timokorthals.de/?p=334
### adapted by Stéphane T.

_ipt=/sbin/iptables    ### iptables 路径(应该是这个)
_input=badips.db       ### 数据库的名称(会用这个名称下载)
_pub_if=eth0           ### 连接到互联网的设备(执行 $ifconfig 获取)
_droplist=droplist     ### iptables 中链的名称(如果你已经有这么一个名称的链,你就换另外一个)
_level=3               ### Blog(LCTT 译注:Bad log)等级:不怎么坏(0)、确认坏(3)、相当坏(5)(从 www.badips.com 获取详情)
_service=any           ### 记录日志的服务(从 www.badips.com 获取详情)

### 获取不良 IPs
wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }

### 设置我们的黑名单 ###
### 首先清除该链
$_ipt --flush $_droplist

### 创建新的链
### 首次运行时取消下面一行的注释
# $_ipt -N $_droplist

### 过滤掉注释和空行
### 保存每个 ip 到 $ip
for ip in `cat $_input`
do
    ### 添加到 $_droplist
    $_ipt -A $_droplist -i ${_pub_if} -s $ip -j LOG --log-prefix "Drop Bad IP List "
    $_ipt -A $_droplist -i ${_pub_if} -s $ip -j DROP
done

### 最后,插入或者追加到我们的黑名单列表
$_ipt -I INPUT -j $_droplist
$_ipt -I OUTPUT -j $_droplist
$_ipt -I FORWARD -j $_droplist

### 删除你的临时文件
rm $_input
exit 0

完成这些后,你应该创建一个定时任务定期更新我们的黑名单。

为此,我使用 crontab 在每天晚上 11:30(在我的延迟备份之前) 运行脚本。

crontab -e
23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS

别忘了更改脚本的权限:

chmod + x myBlacklist.sh

现在终于完成了,你的服务器/计算机应该更安全了。

你也可以像下面这样手动运行脚本:

cd /home/<user>/
./myBlacklist.sh

它可能要花费一些时间,因此期间别中断脚本。事实上,耗时取决于该脚本的最后一行。

使用 Fail2ban 向 badIPs 报告 IP 地址

在本篇指南的第二部分,我会向你展示如何通过使用 Fail2ban 向 badips.com 网站报告不良 IP 地址。

Fail2ban >= 0.8.12

通过 Fail2ban 完成报告。取决于你 Fail2ban 的版本,你要使用本章的第一或第二节。

如果你 fail2ban 的版本是 0.8.12 或更新版本。

fail2ban-server --version

在每个你要报告的类别中,添加一个 action。

[ssh]
enabled = true
action = iptables-multiport
         badips[category=ssh]
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry= 6

正如你看到的,类别是 SSH,从 https://www.badips.com/get/categories 查找正确类别。

Fail2ban < 0.8.12

如果版本是 0.8.12 之前,你需要新建一个 action。你可以从 https://www.badips.com/asset/fail2ban/badips.conf 下载。

wget https://www.badips.com/asset/fail2ban/badips.conf -O /etc/fail2ban/action.d/badips.conf

在上面的 badips.conf 中,你可以像前面那样激活每个类别,也可以全局启用它:

cd /etc/fail2ban/
vi jail.conf
[DEFAULT]
...

banaction = iptables-multiport
            badips

现在重启 fail2ban - 从现在开始它就应该开始报告了。

service fail2ban restart

你的 IP 报告统计信息

最后一步 - 没那么有用。你可以创建一个密钥。 但如果你想看你的数据,这一步就很有帮助。

复制/粘贴下面的命令,你的控制台中就会出现一个 JSON 响应。

wget https://www.badips.com/get/key -qO -

{
  "err":"",
  "suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",
  "key":"5f72253b673eb49fc64dd34439531b5cca05327f"
}

badips 网站,输入你的 “key” 并点击 “statistics”。

现在你就可以看到不同类别的统计信息。

(题图:Pixabay , CC0


via: https://www.howtoforge.com/tutorial/protect-your-server-computer-with-badips-and-fail2ban/

作者:Stephane T 译者:ictlyh 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8450-1.html?utm_source=rss&utm_medium=rss

关于 Linux 进程你所需要知道的一切

$
0
0

在这篇指南中,我们会逐步对进程做基本的了解,然后简要看看如何用特定命令管理 Linux 进程

进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。

进程的类型

在 Linux 中主要有两种类型的进程:

  • 前台进程(也称为交互式进程) - 这些进程由终端会话初始化和控制。换句话说,需要有一个连接到系统中的用户来启动这样的进程;它们不是作为系统功能/服务的一部分自动启动。
  • 后台进程(也称为非交互式/自动进程) - 这些进程没有连接到终端;它们不需要任何用户输入。

什么是守护进程daemon

这是后台进程的特殊类型,它们在系统启动时启动,并作为服务一直运行;它们不会死亡。它们自发地作为系统任务启动(作为服务运行)。但是,它们能被用户通过 init 进程控制。

Linux 进程状态

Linux 进程状态

在 Linux 中创建进程

(LCTT 译注:此节原文不确,根据译者理解重新提供)

在 Linux 中创建进程有三种方式:

fork() 方式

使用 fork() 函数以父进程为蓝本复制一个进程,其 PID号与父进程 PID 号不同。在 Linux 环境下,fork() 是以写复制实现的,新的子进程的环境和父进程一样,只有内存与父进程不同,其他与父进程共享,只有在父进程或者子进程进行了修改后,才重新生成一份。

system() 方式

system() 函数会调用 /bin/sh –c command 来执行特定的命令,并且阻塞当前进程的执行,直到 command 命令执行完毕。新的子进程会有新的 PID。

exec() 方式

exec() 方式有若干种不同的函数,与之前的 fork() 和 system() 函数不同,exec() 方式会用新进程代替原有的进程,系统会从新的进程运行,新的进程的 PID 值会与原来的进程的 PID 值相同。

Linux 如何识别进程?

由于 Linux 是一个多用户系统,意味着不同的用户可以在系统上运行各种各样的程序,内核必须唯一标识程序运行的每个实例。

程序由它的进程 ID(PID)和它父进程的进程 ID(PPID)识别,因此进程可以被分类为:

  • 父进程 - 这些是在运行时创建其它进程的进程。
  • 子进程 - 这些是在运行时由其它进程创建的进程。

init 进程

init 进程是系统中所有进程的父进程,它是启动 Linux 系统后第一个运行的程序;它管理着系统上的所有其它进程。它由内核自身启动,因此理论上说它没有父进程。

init 进程的进程 ID 总是为 1。它是所有孤儿进程的收养父母。(它会收养所有孤儿进程)。

查找进程 ID

你可以用 pidof 命令查找某个进程的进程 ID:

# pidof systemd
# pidof top
# pidof httpd

查找 Linux 进程 ID

查找 Linux 进程 ID

要查找当前 shell 的进程 ID 以及它父进程的进程 ID,可以运行:

$ echo $$
$ echo $PPID

查找 Linux 父进程 ID

查找 Linux 父进程 ID

在 Linux 中启动进程

每次你运行一个命令或程序(例如 cloudcmd - CloudCommander),它就会在系统中启动一个进程。你可以按照下面的方式启动一个前台(交互式)进程,它会被连接到终端,用户可以发送输入给它:

# cloudcmd

启动 Linux 交互进程

启动 Linux 交互进程

Linux 后台任务

要在后台(非交互式)启动一个进程,使用 & 符号,此时,该进程不会从用户中读取输入,直到它被移到前台。

# cloudcmd &
# jobs

在后台启动 Linux 进程

在后台启动 Linux 进程

你也可以使用 Ctrl + Z 暂停执行一个程序并把它发送到后台,它会给进程发送 SIGSTOP 信号,从而暂停它的执行;它就会变为空闲:

# tar -cf backup.tar /backups/*  ### 按下 Ctrl+Z
# jobs

要在后台继续运行上面被暂停的命令,使用 bg 命令:

# bg

要把后台进程发送到前台,使用 fg 命令以及任务的 ID,类似:

# jobs
# fg %1

Linux 后台进程任务

Linux 后台进程任务

你也可能想要阅读:如何在后台启动 Linux 命令以及在终端分离(Detach)进程

Linux 中进程的状态

在执行过程中,取决于它的环境一个进程会从一个状态转变到另一个状态。在 Linux 中,一个进程有下面的可能状态:

  • Running - 此时它正在运行(它是系统中的当前进程)或准备运行(它正在等待分配 CPU 单元)。
  • Waiting - 在这个状态,进程正在等待某个事件的发生或者系统资源。另外,内核也会区分两种不同类型的等待进程;可中断等待进程interruptible waiting processes - 可以被信号中断,以及不可中断等待进程uninterruptible waiting processes- 正在等待硬件条件,不能被任何事件/信号中断。
  • Stopped - 在这个状态,进程已经被停止了,通常是由于收到了一个信号。例如,正在被调试的进程。
  • Zombie - 该进程已经死亡,它已经停止了但是进程表process table中仍然有它的条目。

如何在 Linux 中查看活跃进程

有很多 Linux 工具可以用于查看/列出系统中正在运行的进程,两个传统众所周知的是 pstop 命令:

1. ps 命令

它显示被选中的系统中活跃进程的信息,如下图所示:

# ps
# ps -e | head

列出 Linux 活跃进程

列出 Linux 活跃进程

2. top - 系统监控工具

top 是一个强大的工具,它能给你提供 运行系统的动态实时视图,如下面截图所示:

# top

列出 Linux 正在运行的程序

列出 Linux 正在运行的程序

阅读这篇文章获取更多 top 使用事例:Linux 中 12 个 top 命令实例

3. glances - 系统监控工具

glances 是一个相对比较新的系统监控工具,它有一些比较高级的功能:

# glances

Glances - Linux 进程监控

Glances – Linux 进程监控

要获取完整使用指南,请阅读:Glances - Linux 的一个高级实时系统监控工具

还有很多你可以用来列出活跃进程的其它有用的 Linux 系统监视工具,打开下面的链接了解更多关于它们的信息:

  1. 监控 Linux 性能的 20 个命令行工具
  2. 13 个有用的 Linux 监控工具

如何在 Linux 中控制进程

Linux 也有一些命令用于控制进程,例如 killpkillpgrepkillall,下面是一些如何使用它们的基本事例:

$ pgrep -u tecmint top
$ kill 2308
$ pgrep -u tecmint top
$ pgrep -u tecmint glances
$ pkill glances
$ pgrep -u tecmint glances

控制 Linux 进程

控制 Linux 进程

想要深入了解如何使用这些命令,在 Linux 中杀死/终止活跃进程,可以点击下面的链接:

  1. 终止 Linux 进程的 Kill、Pkill 和 Killall 命令指南
  2. 如何在 Linux 中查找并杀死进程

注意当你系统僵死freeze时你可以使用它们杀死 Linux 中的不响应程序

给进程发送信号

Linux 中控制进程的基本方法是给它们发送信号。你可以发送很多信号给一个进程,运行下面的命令可以查看所有信号:

$ kill -l

列出所有 Linux 信号

列出所有 Linux 信号

要给一个进程发送信号,可以使用我们之前提到的 killpkillpgrep 命令。但只有被编程为能识别这些信号时程序才能响应这些信号。

大部分信号都是系统内部使用,或者给程序员编写代码时使用。下面是一些对系统用户非常有用的信号:

  • SIGHUP 1 - 当控制它的终端被被关闭时给进程发送该信号。
  • SIGINT 2 - 当用户使用 Ctrl+C 中断进程时控制它的终端给进程发送这个信号。
  • SIGQUIT 3 - 当用户发送退出信号 Ctrl+D 时给进程发送该信号。
  • SIGKILL 9 - 这个信号会马上中断(杀死)进程,进程不会进行清理操作。
  • SIGTERM 15 - 这是一个程序终止信号(kill 默认发送这个信号)。
  • SIGTSTP 20 - 它的控制终端发送这个信号给进程要求它停止(终端停止);通过用户按 Ctrl+Z 触发。

下面是当 Firefox 应用程序僵死时通过它的 PID 杀死它的 kill 命令事例:

$ pidof firefox
$ kill 9 2687
或
$ kill -KILL 2687
或
$ kill -SIGKILL 2687

使用它的名称杀死应用,可以像下面这样使用 pkill 或 killall:

$ pkill firefox
$ killall firefox

更改 Linux 进程优先级

在 Linux 系统中,所有活跃进程都有一个优先级以及 nice 值。有比点优先级进程有更高优先级的进程一般会获得更多的 CPU 时间。

但是,有 root 权限的系统用户可以使用 nicerenice 命令影响(更改)优先级。

在 top 命令的输出中, NI 显示了进程的 nice 值:

$ top

列出 Linux 正在运行的进程

列出 Linux 正在运行的进程

使用 nice 命令为一个进程设置 nice 值。记住一个普通用户可以给他拥有的进程设置 0 到 20 的 nice 值。

只有 root 用户可以使用负的 nice 值。

要重新设置一个进程的优先级,像下面这样使用 renice 命令:

$ renice +8  2687
$ renice +8  2103

阅读我们其它如何管理和控制 Linux 进程的有用文章。

  1. Linux 进程管理:启动、停止以及中间过程
  2. 使用 ‘top’ 命令 Batch 模式查找内存使用最高的 15 个进程
  3. 在 Linux 中查找内存和 CPU 使用率最高的进程
  4. 在 Linux 中如何使用进程 ID 查找进程名称

就是这些!如果你有任何问题或者想法,通过下面的反馈框和我们分享吧。

(题图:Pixabay,CC0)


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S(Free and Open-Source Software) 爱好者,一个 Linux 系统管理员、web 开发员,现在也是 TecMint 的内容创建者,他喜欢和电脑一起工作,他相信知识共享。


via: http://www.tecmint.com/linux-process-management/

作者:Aaron Kili 译者:ictlyh 校对:wxy

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


完美阅读及发表评论,请猛击:https://linux.cn/article-8451-1.html?utm_source=rss&utm_medium=rss

LF Asia 公布 2017 年度中国 LinuxCon + ContainerCon + CloudOpen 大会日程

$
0
0

这一开源技术盛会将为开发人员、架构师、系统管理员、DevOps、企业高层和其他专业人士提供权威内容 

中国北京,2017 年 4 月 21 日——LF Asia 公布了 LinuxCon + ContainerCon + CloudOpen中国(LC3)大会的完整日程,这一集三大行业知名大会于一身的盛会将于 2017 年 6 月 19 日至 20 日在北京举行。 

在 LC3 上,与会者将可进行协作、共享信息以及学习最新和最有趣的开源技术,包括 Linux、容器、云技术、网络、微服务等。此外,与会者还能深入了解如何在开源社区中导航和引导。 

Linux 创始人 Linus Torvalds 将在 LC3 大会上发表主题演讲。

会议将包括以下八个主题的分组讨论:

  • KubeCon、 Kubernetes
  • 云原生及容器Cloud Native & Containers
  • Linux
  • 区块链
  • 网络与编排Networking & Orchestration
  • 物联网和嵌入式 Linux
  • 专业开源中的业务需求

详细日程安排

6月19日,第一天

  • 7:30-- 9:00   签到
  • 9:00--10:30  主题演讲
    • Linux基金会执行董事 Jim Zemlin
    • 华为产品与解决方案首席技术官李三琦
    • 微软亚太科技有限公司董事长申元庆   
  • 10:30--11:00 茶歇及赞助商展示
  • 11:00--12:10 分组讨论
  • 12:10--13:35 午餐
  • 13:35--16:05 分组讨论
  • 16:05--16:15 茶歇及赞助商展示
  • 16:15--17:35 主题演讲
    • 中国联通网络技术研究院首席技术专家唐雄燕
    • 思科系统工程首席技术官兼首席架构师 Dave Ward
    • 华为云平台首席架构师熊英
  • 17:35--18:00 晚宴暨赞助商展示

6月20日,第二天

  • 8:00-- 9:00   签到
  • 9:00--10:30 主题演讲
    • Linux 和 Git 创始人 Linus Torvalds 和 VMware 副总裁兼首席开源官 Dirk Hohndel 
    • 中国移动研究院副院长杨志强
    • 阿里云首席架构师唐洪    
  • 10:30--11:00 茶歇及赞助商展示
  • 11:00--12:10 分组讨论
  • 12:10--13:35 午餐
  • 13:35--16:05 分组讨论
  • 16:05--16:15 茶歇及赞助商展示
  • 16:15--17:15主题演讲
    • 红帽高级副总裁兼亚太区总经理 Dirk-Peter van Leeuwen
    • 谷歌 Kubernetes 技术负责人 David Oppenheimer
  • 17:15 Linux 基金会执行董事 Jim Zemlin 致闭幕词 

特邀演讲嘉宾

  • OpenStack 基金会执行董事 Jonathan Bryce
  • 华为产品与解决方案首席技术官李三琦
  • 谷歌Kubernetes技术负责人D avid Oppenheimer
  • 微软亚太科技有限公司董事长申元庆
  • 阿里云首席架构师唐洪
  • 中国联通网络技术研究院首席技术专家唐雄燕
  • Linux 和 Git 创始人 Linus Torvalds
  • 红帽高级副总裁兼亚太区总经理 Dirk-Peter van Leeuwen
  • 思科系统工程首席技术官兼首席架构师 Dave Ward
  • 华为云平台首席架构师熊英
  • Linux 基金会执行董事 Jim Zemlin
  • 中国移动研究院副院长杨志强
  • VMware 副总裁兼首席开源官 Dirk Hohndel

赞助商

战略赞助商:华为

钻石赞助商:阿里云,英特尔,微软中国

金牌赞助商:红帽

银牌赞助商:VMware

铜牌赞助商:IBM,Rancher,红旗Linux

注册方式

标准注册:220 美元,折合 1520 RMB (2017 年 4 月 28 日 – 2017 年 5 月 28 日期间)

现场注册:270 美元,折合 1865 RMB (2017 年 5 月 29 日,活动现场)

注册地址:https://www.lfasiallc.com/linuxcon-containercon-cloudopen-china/register 。

学术人员注册

面向在籍学生和全职教师。现场领取胸卡时,必须出示有效的学生证/教师证。如有疑问,请发邮件至 events@linuxfoundation.org。

赞助商/演讲人/媒体注册

请发邮件至 events@linuxfoundation.org,索取注册码。

爱好者注册

请发邮件至 events@linuxfoundation.org,申请“爱好者费用”注册码。如果您自费参加此活动且是社区的活跃用户,可以选择此项。

关于 LF Asia

LF Asia 是一家美国有限公司,在亚洲举办开源技术和开源项目活动。LF Asia 致力于开源技术的教育和沟通平台的搭建,让开发人员、关键技术专家、高管以及运营商汇聚一堂。更多信息,请访问 www.lfeventsllc.com

LC3LinuxConContainerCon 和 CloudOpen 是 Linux 基金会的商标属 Linux 基金会所拥有使用时需要得到 Linux 基金会的授权。更多信息,请访问 Linux 基金会的商标网站:https://www.linuxfoundation.org/trademark-usage

Linux 是 Linus Torvalds 的注册商标。


媒体垂询:

Dan Brown / LF Events有限公司

+1 415-420-7880

pr@lfeventsllc.com

文洁 / 逻壹博达

+86-10-65228081x235

melody.wen@teamlewis.com


完美阅读及发表评论,请猛击:https://linux.cn/article-8452-1.html?utm_source=rss&utm_medium=rss

Viewing all 9060 articles
Browse latest View live