2019年7月

Type Linux Commands In Capital Letters To Run Them As Sudo User

我非常喜欢 Linux 社区的原因是他们创建了很多有趣的项目,你很少能在任何其他操作系统中找到它们。不久前,我们看了一个名为 Hollywood 的有趣项目,它在类 Ubuntu 系统将终端变成了好莱坞技术情景剧的黑客界面。还有一些其他工具,例如 cowsayfortunesltoilet 等,用来消磨时间自娱自乐!它们可能没有用,但这些程序娱乐性不错并且使用起来很有趣。今天,我偶然发现了另一个名为 SUDO 的类似工具。正如名字暗示的那样,你无论何时用大写字母输入 Linux 命令,SUDO 程序都会将它们作为 sudo 用户运行!这意味着,你无需在要运行的 Linux 命令前面输入 sudo。很酷,不是么?

安装 SUDO

提醒一句:

在安装这个程序(或任何程序)之前,请查看源代码(最后给出的链接),并查看是否包含会损害你的系统的可疑/恶意代码。在 VM 中测试它。如果你喜欢或觉得它很有用,你可以在个人/生产系统中使用它。

用 Git 克隆 SUDO 仓库:

$ git clone https://github.com/jthistle/SUDO.git

此命令将克隆 SUDO GIT 仓库的内容,并将它们保存在当前目录下的 SUDO 的目录中。

Cloning into 'SUDO'...
remote: Enumerating objects: 42, done.
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 42 (delta 17), reused 30 (delta 12), pack-reused 0
Unpacking objects: 100% (42/42), done.

切换到 SUDO 目录:

$ cd SUDO/

并使用命令安装它:

$ ./install.sh

该命令将在 ~/.bashrc 文件中添加以下行:

[...]
# SUDO - shout at bash to su commands
# Distributed under GNU GPLv2, @jthistle on github

shopt -s expand_aliases

IFS_=${IFS}
IFS=":" read -ra PATHS <<< "$PATH"

for i in "${PATHS[@]}"; do
    for j in $( ls "$i" ); do
        if [ ${j^^} != $j ] && [ $j != "sudo" ]; then
            alias ${j^^}="sudo $j"
        fi
    done
done

alias SUDO='sudo $(history -p !!)'

IFS=${IFS_}

# end SUDO

它还会备份你的 ~/.bashrc 并将其保存为 ~/.bashrc.old。如果有重大错误,你可以恢复它。

最后,使用命令更新更改:

$ source ~/.bashrc

现在,用大写字母中输入 Linux 命令,将它们作为 Sudo 用户运行

通常我们像下面那样执行需要 sudo/root 权限的命令。

$ sudo mkdir /ostechnix

对么?没错!上面的命令将在根目录(/)中创建名为 ostechnix 的目录。让我们使用 Ctrl + c 取消。

一旦安装了 SUDO,你就可以在不使用 sudo 的情况下输入任何大写 Linux 命令并运行它们。因此,你可以像下面那样运行上面的命令:

$ MKDIR /ostechnix
$ TOUCH /ostechnix/test.txt
$ LS /ostechnix

用大写字母输入 Linux 命令以将其作为 sudo 用户运行

请注意它无法绕过 sudo 密码。你仍然需要键入 sudo 密码才能执行给定的命令。它只会有助于避免在每个命令前面输入 sudo

相关阅读:

当然,输入 sudo 只需几秒钟,所以这不是什么大问题。 我必须告诉这是一个用来消磨时间的有趣且无用的项目。 如果你不喜欢它,那就去学习一些有用的东西吧。 如果你喜欢它,试一试,玩得开心!

资源:


via: https://www.ostechnix.com/type-linux-commands-in-capital-letters-to-run-them-as-sudo-user/

作者:sk 选题:lujun9972 译者:geekpi 校对:wxy

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

想要在 Windows 10 中以幻灯片形式逐个查看文件夹中的图像么?开源软件可以做到。

 title=

欢迎阅读今天的系列文章 “我该如何让它实现?”就我而言,我试图在 Windows 10 上以幻灯片形式查看 JPG 图像的文件夹。像往常一样,我转向开源来解决这个问题。

在 Mac 上,以幻灯片形式查看 JPG 图像文件夹只需选择文件夹中的所有图像(Command-A),然后按 Option-Command-Y 即可。之后,你可以使用箭头键向前翻动。当然,在 Windows 中,你可以通过选择第一个图像,然后单击窗口中黄色的管理栏,然后选择幻灯片来执行类似的操作。在那里,你可以控制速度,但只能做到:慢、中、快。

我希望像在 Windows 中能像 Mac 一样翻下一张图片。自然地,我 Google 搜索了一下并找到了一个方案。我发现了 ImageGlass 这个开源应用,其许可证是 GPL 3.0,并且它完美地做到了。这是它的样子:

 title=

关于 ImageGlass

ImageGlass 是由 Dương Diệu Pháp 开发的,根据他的网站,他是一名越南开发人员,在 Chainstack 负责前端。他与在美国的 Kevin Routley 协作,后者“为 ImageGlass 开发新功能”。源代码可以在 GitHub 上找到。

ImageGlass 支持最常见的图像格式,包括 JPG、GIF、PNG、WEBP、SVG 和 RAW。用户可以轻松自定义扩展名列表。

我遇到的具体问题是需要找到一张用于目录封面的图像。不幸的是,它在一个包含数十张照片的文件夹中。在 ImageGlass 中以幻灯片浏览照片,在我想要的照片前停止,并将其下载到我的项目文件夹中变得很容易。开源再次帮助了我,该应用只花了很短的时间下载和使用。

在 2016 年 3 月 10 日,Jason Baker 在他的文章 9 款 Picasa 的开源替代品 中将 ImageGlass 列为其中之一。如果你有需求,里面还有一些其他有趣的图像相关工具。


via: https://opensource.com/article/19/6/use-imageglass-view-jpg-images-slideshow-windows-10

作者:Jeff Macharyas 选题:lujun9972 译者:geekpi 校对:wxy

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

如果你正在 Linux 中寻找一个好的 Visio 查看器,这里有一些可以在 Linux 中使用的微软 Visio 的替代方案。

微软 Visio 是创建或生成关键任务图和矢量表示的绝佳工具。虽然它可能是制作平面图或其他类型图表的好工具 —— 但它既不是免费的,也不是开源的

此外,微软 Visio 不是一个独立的产品。它与微软 Office 捆绑在一起。我们过去已经看过 MS Office 的开源替代品。今天我们将看看你可以在 Linux 上使用哪些工具代替 Visio。

适用于 Linux 的最佳 微软 Visio 备选方案

用于 Linux 的微软 Visio 备选方案

此处为强制性免责声明。该列表不是排名。排名第三的产品并不比排名第六的好。

我还提到了两个可以从 Web 界面使用的非开源 Visio 软件。

软件类型许可证类型
LibreOffice Draw桌面软件自由开源
OpenOffice Draw桌面软件自由开源
Dia桌面软件自由开源
yED Graph Editor桌面和基于 Web免费增值
Inkscape桌面软件自由开源
Pencil桌面和基于 Web自由开源
Graphviz桌面软件自由开源
darw.io桌面和基于 Web自由开源
Lucidchart基于 Web免费增值
Calligra Flow桌面软件自由开源

1、LibreOffice Draw

LibreOffice Draw 模块是微软 Visio 的最佳开源替代方案之一。在它的帮助下,你可以选择制作一个想法的速写或一个复杂的专业平面布置图来展示。流程图、组织结构图、网络图、小册子、海报等等!所有这些都不需要花一分钱。

好的是它与 LibreOffice 捆绑在一起,默认情况下安装在大多数 Linux 发行版中。

主要功能概述:

  • 用于制作宣传册/海报的样式和格式工具
  • Calc 数据可视化
  • PDF 文件编辑功能
  • 通过操作图库中的图片来创建相册
  • 灵活的绘图工具类似于 微软 Visio (智能连接器,尺寸线等)的工具
  • 支持 .VSD 文件(打开)

官网:LibreOffice Draw

2、Apache OpenOffice Draw

很多人都知道 OpenOffice(LibreOffice 项目最初就是基于它的),但他们并没有真正意识到 Apache OpenOffice Draw 可以作为微软 Visio 的替代方案。但事实上,它是另一个令人惊奇的开源图表软件工具。与 LibreOffice Draw 不同,它不支持编辑 PDF 文件,但它为任何类型的图表创建提供了绘图工具。

这只是个警告。仅当你的系统中已经有 OpenOffice 时才使用此工具。这是因为安装 OpenOffice 是一件痛苦的事情,而且它已经不再继续开发

主要功能概述:

  • 快速创建 3D 形状控制器
  • 创建作品的 flash 版本(.swf)
  • 样式和格式工具
  • 与微软 Visio 类似的灵活绘图工具(智能连接器、尺寸线等)

官网:Apache OpenOffice Draw

3、Dia

Dia 是另一个有趣的开源工具。它可能不像前面提到的那样处于积极开发之中。但是,如果你正在寻找一个自由而开源的替代微软 Visio 的简单而体面的图表,那么 Dia 可能是你的选择。这个工具可能唯一让你失望的地方就是它的用户界面。除此之外,它还允许你为复杂的图使用强大的工具(但它看起来可能不太好 —— 所以我们建议你用于更简单的图)。

主要功能概述:

  • 它可以通过命令行使用
  • 样式和格式工具
  • 用于自定义形状的形状存储库
  • 与微软 Visio 类似的绘图工具(特殊对象、网格线、图层等)
  • 跨平台

官网:Dia

4、yED Graph Editor

是最受欢迎的免费的微软 Visio 替代方案之一。如果你对它是一个免费软件而不是开源项目有些担心,你仍然可以通过 web 浏览器免费使用 yED 的实时编辑器。如果你想用一个非常易于使用的界面快速绘制图表,这是最好的建议之一。

主要功能概述:

  • 拖放功能,方便图表制作
  • 支持导入外部数据进行链接

官网:yED Graph Editor

5、Inkscape

Inkscape 是一个自由开源的矢量图形编辑器。你将拥有创建流程图或数据流程图的基本功能。它不提供高级的图表绘制工具,而是提供创建更简单图表的基本工具。因此,当你希望通过使用图库中的可用符号,在图库连接器工具的帮助下生成基本图时,Inkscape 可能是你的 Visio 替代品。

主要功能概述:

  • 连接器工具
  • 灵活的绘图工具
  • 广泛的文件格式兼容性

官网:Inkscape

6、Pencil 项目

Pencil 项目是一个令人印象深刻的开源项目,适用于 Windows、Mac 以及 Linux。它具有易于使用的图形界面,使绘图更容易和方便。它有一个很好的内建形状和符号的集合,可以使你的图表看起来很棒。它还内置了 Android 和 iOS UI 模板,可以让你在需要时创建应用程序原型。

你也可以将其安装为 Firefox 扩展,但该扩展不能使用项目的最新版本。

主要功能概述:

  • 轻松浏览剪贴画(使用 openclipart.org)
  • 导出为 ODT 文件/PDF 文件
  • 图表连接工具
  • 跨平台

官网:Pencil 项目

7、Graphviz

Graphviz 略有不同。它不是绘图工具,而是专用的图形可视化工具。如果你在网络图中需要多个设计来表示一个节点,那么一定要使用这个工具。当然,你不能用这个工具做平面布置图(至少这不容易)。因此,它最适合于网络图、生物信息学、数据库连接和类似的东西。

主要功能概述:

  • 支持命令行使用
  • 支持自定义形状和表格节点布局
  • 基本样式和格式设置工具

官网:Graphviz

8、Draw.io

Draw.io 主要是一个基于 Web 的免费图表工具,它的强大的工具几乎可以制作任何类型的图表。你只需要拖放然后连接它们以创建流程图、ER 图或任何相关的。此外,如果你喜欢该工具,则可以尝试离线桌面版本

主要功能概述:

  • 直接上传到云存储服务
  • 自定义形状
  • 样式和格式工具
  • 跨平台

官网:Draw.io

9、Lucidchart

Lucidchart 是一个基于 Web 的高级图表工具,它提供了一个具有有限功能的免费订阅。你可以使用免费订阅创建几种类型的图表,并将其导出为图像或 PDF。但是,免费版本不支持数据链接和 Visio 导入/导出功能。如果你不需要数据链接功能,Lucidchart 可以说是一个生成漂亮的图表的非常好的工具。

主要功能概述:

  • 可以集成到 Slack、Jira 核心、Confluence
  • 能够制作产品模型
  • 导入 Visio 文件

官网:Lucidchart

10、Calligra Flow

calligra flow

Calligra Flow 是 Calligra 项目的一部分,旨在提供自由开源的软件工具。使用 Calligra flow 你可以轻松地创建网络图、实体关系图、流程图等

主要功能概述:

  • 各种模具盒
  • 样式和格式工具

官网:Calligra Flow

总结

既然你已经了解到了这些最好的自由开源的 Visio 替代方案,你对它们有什么看法?

对于你任何方面的需求,它们是否优于 微软 Visio?另外,如果我们错过了你最喜欢的基于 Linux 的替代微软 Visio 的绘图工具,请在下面的评论中告诉我们。


via: https://itsfoss.com/visio-alternatives-linux/

作者:Ankush Das 译者:ZhiW5217 校对:wxy

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

蚂蚁金服的 SOFAStack 作为一个成功地将企业私有项目转化为开源核心模式的知名案例,我们之前对背后的思考和推动力做过专题分析,但是具体这件事是如何在蚂蚁金服内部发生的、是如何实操的,有很多读者向我们表示非常感兴趣,而我觉得这也是其它技术公司所正在探索和思考的方向。

因此,上个月底,老王在参加上海举办的 KubeCon 2019 时,遇到了蚂蚁金服 SOFA 团队的余淮,他目前在蚂蚁金服中间件团队服务与框架组具体负责开发框架与 SOFAStack 的开源工作。于是,参会之余,我和余淮就 SOFA 开源的实操方面进行了深入的沟通,现将谈话所得整理给大家。

余淮(左)和老王(右)在 KubeCon 2019

SOFA 与开源

2018 年,SOFAStack 开始开源之后,处于关注,我曾向蚂蚁金服中间件负责人杨冰了解过为什么要将 SOFA 开源的背后思考,以及 SOFA 发展迭代的历程

目前,SOFA 的架构已经发展到 SOFA 5 阶段,前任的 SOFA 开源负责人鲁直也向我介绍过 SOFA 5 中重点推进的方向,主要包括 Service Mesh 和 Serverless,以及分布式事务 Seata 的落地等。而在今年上半年他们又开源了分布式事务框架 Seata 和服务注册中心 SOFARegistry。

作为一个成功的开源核心模式的项目,我非常关注 SOFA 开源的实操是如何进行的,是如何进行开源治理的,作为 SOFA 团队的老朋友,我们话题就直接从 SOFA 的开源治理聊起。

以 SOFA 为例:公司内部软件的开源流程

余淮说,从 2015 年开始,蚂蚁金服开启了金融科技对外输出的战略,SOFAStack 也走出了蚂蚁金服,甚至跨越了国界,被更多金融机构与合作伙伴所使用,如天弘基金、信美互信、南京银行、PayTM、DANA 钱包等。

在与合作伙伴以及客户的沟通、合作过程中,他们发现了 SOFAStack 的理念和能力也正是很多金融行业的企业所需要的。在蚂蚁金融科技对外输出的过程中,内部已经对 SOFAStack 进行了一定程度的代码重构,例如历史兼容逻辑的剥离等,但是并未能达到直接开源的标准。

关于开源,其内部一直有开源的讨论,到 2017 年双十一结束后正式决定开源。经过了一系列的准备,2018 年 4 月,完成了对 SOFA 项目的满足了开源改造的标准后,SOFAStack 马上宣布正式开源框架中部分重要组件。

SOFA 团队给开源定的策略叫「 开源核心 Open Core 」,顾名思义就是要将接口层以及核心实现都开源,以可扩展化的方式来层层构建 SOFAStack 的能力,保证 SOFAStack 的内部版本和开源的版本采用的是同一个内核。为此 SOFAStack 做了大量的改造和重构工作。

在开源的具体考量上,余淮表示,SOFAStack 的开源改造基本上有三条原则,分别是高可扩展性、对内兼容历史版本、对外兼容业界标准

以 SOFARPC 重构为例,大概经历了这样的过程:

  1. 首先需要将 SOFARPC 进行了一次核心接口和模型抽象,然后增加了扩展点机制和事件总线机制,所有的对内、对外实现都基于这些核心接口和模型去扩展,并且保证这些扩展能力都是平等的、可选的;
  2. 接着将核心的处理逻辑实现迁移到这套接口和模型上来,保证 RPC 能力完整可用;
  3. 然后需要将 RPC 里一些对接内部系统的、兼容历史逻辑的代码做成内部扩展,并进行全量测试验证,确保和已有线上的历史方案的兼容,发布上线;
  4. 最后会调研业界的一些开源标准方案和实现,并对其进行兼容,例如 SOFARPC 不仅对接自己的 SOFARegistry 的实现,还兼容了 Zookeeper、Etcd、Nacos 等业界优秀的注册中心方案。

虽然上面重构过程听上去没那么复杂,但是在实际过程中还是非常考验团队的技术能力的,特别是在抽象核心接口和模型的时候,为了做到既兼容内部又兼容外部,这需要进行大量的调研工作,才能做好这层较为通用抽象。其次在对内逻辑兼容的时候,由于内部的历史负担还是比较重的,为了能让重构的代码安全上线,团队也做了很多事情。

还是举 SOFARPC 的例子,蚂蚁内部的服务路由过程比开源是要复杂很多的,特别是配合蚂蚁特有的单元化部署以及异地多活的能力,有时候需要多层路由才能找到目标地址。为了验证重构后逻辑的正确性,除了在开源代码里有单元测试用例外,SOFA 团队在内部也构建了一套非常完善的集成框架,专门用来测试已有逻辑的兼容性及正确性。

基于开源核心这套思想建设 SOFAStack 以后,其实对开发人员的工作量来不会变少,反而可能是增多的。这是因为在写代码的同时,需要更多的考虑内部外部的使用情况,对代码质量也提出了更高的要求,开发流程会变得更加复杂。

例如,内部新增一个特性,在以前可能直接修改代码经过测试就发布上线了,但现在的话会去思考这其中哪些能力是通用的,把这些能力抽象一下放到开源版本里去,然后开源版测试后发布,这个时候内部版本在基于这个开源版进行扩展,再经过测试后发布上线。

虽然开发人员工作变多了,但是这样的话可以让 SOFAStack 的核心代码被更多的开发者评审,在更多的系统中运行,在更多的场景下进行验证,对 SOFAStack 的品质保证有非常大的帮助。

此外在开源进度上,余淮表示, SOFAStack 并不追求开源全部内部的组件,而是会根据产品的特性和开源准备的情况有选择的开源。

例如 SOFAStack 下的分库、分表组件,因为产品特性和 OB 等内部结合紧密就暂时不会开源。金融级分布式架构下未开源部分能力,SOFAStack 会和与业界其它优秀的开源项目做集成,保证整个金融级分布式架构功能的完整性和多样性

所以对于 SOFAStack 来说,并不只有自己开源的产品,而更多关注的是,和整个社区里所有开源优秀的产品一起,打造一套快速构建金融级分布式架构的套件。

开源项目的管理

开源一个项目,作为背后推动的公司事实上要付出相当多的人力和资金成本,同时,也不可避免的会涉及到审批流程。随着蚂蚁金服越来越多领域的项目开源,包括 SOFAStack、AI、区块链等,蚂蚁金服内部出台了相应的严格的审核机制,包括技术、合规、法务、安全等部门进行审核,同时还会考察项目开源对公司的意义,以及是否对社区有价值,在审核通过之后项目就会正式开源与大家见面了。

蚂蚁金服对于开源文化是十分友好的,其内部的代码也大多都是公开在内网的 GitLab 仓库,经常会有业务团队对 SOFAStack 提交一些合并请求(拉取请求)来帮助项目的发展。

同时,蚂蚁金服的工程师也普遍地拥抱开源,开源能够帮助项目产生更多、更好的想法,同时也可以吸收来自社区的贡献,让项目本身能够做的更好,这是大家所喜闻乐见的。

SOFA 的社区治理

开源项目并不是开放源代码就是终点,事实上,这只是开始,之后持续不断的开源治理才是开源之路。而如何将一个开源项目从最开始的由开源项目背后的公司主导转变为社区性项目,这是一个值得思考和探索的课题。

基于目前的开源模式和社区建设力度,SOFA 团队也在尽可能去吸引外部的贡献者。不过 SOFAStack 项目由于大量应用在蚂蚁金服及不少企业线上环境,所以目前对于开发者技术能力以及代码质量要求相对较高,因此,这项任务还需要较多的工作。

目前 SOFA 社区已经涌现了不少积极的开发者和贡献者,解决了社区提出的一些重要需求。这其中一些功能组件的完成,贡献者提供了相当重要的代码基础,而 SOFA 社区成员也积极参与到功能的完善和规范化工作中,甚至有的拉取请求要经过十几个来回才能被合并入功能分支。

余淮同时也谈到,下一步会引入更友好的流程和工具,让更多的开发者能够更容易地加入到 SOFAStack 社区的开发和贡献当中,为 SOFAStack 的共同发展做出包括贡献代码、文档完善和推广宣传等各个方面的贡献。

在社区团队方面,SOFAStack 也设计了诸如 贡献者 Contributor 提交者 Committer 委员会成员 PMC 等多个层面的贡献者认证机制,以让各个层级的热情、精力不同的人能够加入到项目的贡献中。

SOFAStack 开源至今社区已经有 120 多位贡献者共建社区,也有十来位外部提交者通过其贡献的代码获得社区的认可,并进一步取得对社区发展的影响力。谈及这一点,余淮表示,为了保证代码质量,来自社区的代码贡献往往需要 SOFAStack 社区已有成员和贡献者许多次的往复修改和完善才能进入到代码主干,但是通过这些互动,才能真正遴选出来社区的中坚分子,也进一步将项目融入到社区中。

在社区建设方面,除了在 Github 上、钉钉微信群的一些交流外,SOFAStack 社区还会有丰富的线上线下的活动。每周类似周报形式的 SOFA Weekly,帮助大家了解社区的最新资讯和项目进展;社区共建的 SOFALab 源码解析实验室,和社区同学一起学习和解析源码,整理成册,帮助大家更好的学习项目;每月若干次的 SOFAChannel 直播,可以在线和讲师进行沟通交流。与此同时,SOFAStack 也会定期在全国各地举行线下的 SOFAMeetup 活动,大家一起面对面交流,目前已经在全国五个城市举办了 7 场,共有一千多人到现场;也会举办 Workshop 和 CodeLab 等实践类的活动,像本次的 KubeCon 就有一场 Workshop,手把手带着大家一起实践 SOFAStack。

在社区合作方面,社区里有很多优秀的开发者和开源项目,SOFA 团队也经常和社区互相学习、分享、交流技术,目前SOFAStack 已经和很多开源社群建立了良好的关系,包括国内 ServiceMesher,K8S 中国,ShardingSephere,SkyWalking,Ant Design,EggJS 等,也包括国外的 light4j 等。

此外,余淮还谈到,SOFAStack 在今年还会结合实际业务方面和开源社区做更多的能力整合提升,他举例说到 SOFAStack 今年会和做 Spring Cloud 更深入的集成和增强,例如 Spring Cloud 还是文件级别的配置更新,配合 SOFAStack可以做到更细粒度的配置更新等。

总结

要说我对哪个国内开源项目研究的最深入,那非 SOFAStack 莫属。自从 SOFAStack 开源以来,我先后和杨冰、鲁直从 SOFA 开源的思想、战略层面进行过深入沟通,而这次,我希望可以从战术上,从实操层面分享他们在 SOFA 开源方面的经验给广大的开源社区和开源企业。

“穿山甲专访”栏目是 Linux 中国社区推出的面向开源界、互联网技术圈的重要领军人物的系列采访,将为大家介绍中国开源领域中一些积极推动开源,谙熟开源思想的技术人,并辨析其思考、挖掘其动因,揭示其背后所发生的事情,为关注开源、有志于开源的企业和技术人标出一条路径。

取名为“穿山甲”寓意有二:取穿山甲挖掘、深入之意来象征技术进步和表征技术领袖的作用;穿山甲是珍稀保护动物,宣传公益。

Elasticsearch 安装好了之后,Kibana 插件可以为这个功能强大的搜索工具添加可视化功能。

在我之前的文章中,我向 Mac 用户介绍了安装 Elasticsearch 的步骤,这是世界上最受欢迎的企业级搜索引擎。(这里有一篇针对 Linux 用户的单独文章。)其自然语言处理能力使得 Elasticsearch 在数据集中查找细节方面表现出色。一旦你发现了你需要的数据,如果你已经安装了 Kibana,你可以将它提升到一个新的水平。

Kibana 是 Elasticsearch 的开源的数据可视化插件。当你在 Elasticsearch 中找到了数据,Kibana 就会帮助你将其放入折线图、时间序列查询、地理空间地图等。该工具非常适合于必须展示其研究成果的数据科学家,尤其是那些使用开源数据的人。

安装 Kibana

你需要在 Elasticsearch 之外单独安装 Kibana。因为我安装了 Elasticsearch 7.1.1,所以我将安装 Kibana 1.1。版本的匹配非常重要,Kibana 需要针对相同版本的 Elasticsearch 节点运行。 (Kibana 运行在 node.js 上。)

以下是我为 MacOS 安装 Kibana 7.1.1 时所遵循的步骤:

1、确保 Elasticsearch 已下载并运行。如果需要,请参阅上一篇文章。

注意:你至少需要先安装 Elasticsearch 1.4.4 或更高版本才能使用 Kibana。这是因为你需要向 Kibana 提供要连接的 Elasticsearch 实例的 URL 以及你要搜索的 Elasticsearch 索引。通常,最好安装两者的最新版本。

2、单击此处下载 Kibana。你将看到如下的网页,它会提示你在下载部分的右上角下载 Kibana for Mac:

 title=

3、在你的 Downloads 文件夹中,打开 .tar 文件以展开它。此操作将创建一个具有相同名称的文件夹(例如,kibana-7.1.1-darwin-x86_64)。

4、如果你希望 Kibana 放在另一个文件夹中,请立即移动它。

仔细检查 Elasticsearch 是否正在运行,如果没有,请在继续之前启动它。(如果你需要说明,请参阅上一篇文章。)

打开 Kibana 插件

Elasticsearch 运行起来后,你现在可以启动 Kibana 了。该过程类似于启动 Elasticsearch:

1、从 Mac 的 Downloads 文件夹(或 Kibana 移动到的新文件夹)里,打开 Kibana 文件夹(即 ~Downloads/kibana-7.1.1-darwin-x86_64)。

2、打开 bin 子文件夹。

 title=

3、运行 kibana-plugin。你可能会遇到上一篇文章中出现的相同安全警告:  title=

通常,如果收到此警告,请按照那篇文章中的说明清除警告并打开 Kibana。请注意,如果我在终端中没有运行 Elasticsearch 的情况下打开该插件,我会收到相同的安全警告。要解决此问题,如上一篇文章中所述,打开 Elasticsearch 并在终端中运行它。使用 GUI 启动 Elasticsearch 也应该打开终端。

然后,我右键单击 kibana-plugin 并选择“打开”。这个解决方案对我有用,但你可能需要尝试几次。 我的 Elasticsearch 聚会中的几个人在他们的设备上打开 Kibana 时遇到了一些麻烦。

更改 Kibana 的主机和端口号

Kibana 的默认设置将其配置为在 localhost:5601 上运行。你需要更新文件(在这个例子的情况下)~Downloads/kibana-7.1.1-darwin-x86_64/config/kibana.yml 以在运行 Kibana 之前更改主机或端口号。

 title=

以下是我的 Elasticsearch 聚会组里配置 Kibana 时终端的样子,因此默认为 http://localhost:9200,这是查询 Elasticsearch 实例时使用的 URL:

 title=

从命令行运行 Kibana

打开插件后,可以从命令行或 GUI 运行 Kibana。这是终端连接到 Elasticsearch 后的样子:

 title=

与 Elasticsearch 一样,Kibana 默认在前台运行。你可以按 Ctrl-C 来停止它。

总结

Elasticsearch 和 Kibana 是占用大量存储空间的大型软件包。有这么多人一次下载这两个软件包,当我的Elasticsearch 会员和我下载它们两个时,我平均要下载几分钟。这可能是由于 WiFi 不佳和/或用户数量太多,但如果发生同样的事情,请记住这种可能性。

之后,由于我的笔记本电脑存储空间不足,我无法上传我们正在使用的 JSON 文件。我能够按照讲师的可视化进行操作,但无法实时使用 Kibana。因此,在下载 Elasticsearch 和 Kibana 之前,请确保设备上有足够的空间(至少几千兆字节)来上传和使用这些工具搜索文件。

要了解有关 Kibana 的更多信息,他们的用户指南简介是理想的。(你可以根据你正在使用的 Kibana 版本配置该指南。)他们的演示还向你展示了如何在几分钟内构建仪表板,然后进行首次部署。

玩得开心!


via: https://opensource.com/article/19/7/installing-kibana-macos

作者:Lauren Maffeo 选题:lujun9972 译者:wxy 校对:wxy

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

如果你不希望从头开始创造一种数据格式来存放数据,JSON 是一个很好的选择。如果你对 Python 有所了解,就更加事半功倍了。下面就来介绍一下如何使用 Python 处理 JSON 数据。

JSON 的全称是 JavaScript 对象表示法 JavaScript Object Notation 。这是一种以键值对的形式存储数据的格式,并且很容易解析,因而成为了一种被广泛使用的数据格式。另外,不要因为 JSON 名称而望文生义,JSON 并不仅仅在 JavaScript 中使用,它也可以在其它语言中使用。下文会介绍它是如何在 Python 中使用的。

首先我们给出一个 JSON 示例:

{
    "name":"tux",
    "health":"23",
    "level":"4"
}

上面是一个和编程语言无关的原生 JSON 数据。熟悉 Python 的人会看出来这个 JSON 数据跟 Python 中的 字典 dictionary 长得很像。而这两者之间确实非常相似,如果你对 Python 中的列表和字典数据结构有一定的理解,那么 JSON 理解起来也不难。

使用字典存放数据

如果你的应用需要存储一些结构复杂的数据,不妨考虑使用 JSON 格式。对比你可能曾经用过的自定义格式的文本配置文件,JSON 提供了更加结构化的可递归的存储格式。同时,Python 自带的 json 模块已经提供了可以将 JSON 数据导入/导出应用时所需的所有解析库。因此,你不需要针对 JSON 自行编写代码进行解析,而其他开发人员在与你的应用进行数据交互的时候也不需要去解析新的数据格式。正是这个原因,JSON 在数据交换时被广泛地采用了。

以下是一段在 Python 中使用嵌套字典的代码:

#!/usr/bin/env python3

import json

# instantiate an empty dict
team = {}

# add a team member
team['tux'] = {'health': 23, 'level': 4}
team['beastie'] = {'health': 13, 'level': 6}
team['konqi'] = {'health': 18, 'level': 7}

这段代码声明了一个名为 team 的字典,并初始化为一个空字典。

如果要给这个字典添加内容,首先需要创建一个键,例如上面示例中的 tuxbeastiekonqi,然后为这些键一一提供对应的值。上面示例中的值由一个个包含游戏玩家信息的字典充当。

字典是一种可变的变量。字典中的数据可以随时添加、删除或更新。这样的特性使得字典成为了应用程序存储数据的极好选择。

使用 JSON 格式存储数据

如果存放在字典中的数据需要持久存储,这些数据就需要写到文件当中。这个时候就需要用到 Python 中的 json 模块了:

with open('mydata.json', 'w') as f:
    json.dump(team, f)

上面的代码首先创建了一个名为 mydata.json 的文件,然后以写模式打开了这个文件,这个被打开的文件以变量 f 表示(当然也可以用任何你喜欢的名称,例如 fileoutput 等)。而 json 模块中的 dump() 方法则是用于将一个字典输出到一个文件中。

从应用中导出数据就是这么简单,同时这些导出的数据是结构化的、可理解的。现在可以查看导出的数据:

$ cat mydata.json
{"tux": {"health": 23, "level": 4}, "beastie": {"health": 13, "level": 6}, "konqi": {"health": 18, "level": 7}}

从 JSON 文件中读取数据

如果已经将数据以 JSON 格式导出到文件中了,也有可能需要将这些数据读回到应用中去。这个时候,可以使用 Python json 模块中的 load() 方法:

#!/usr/bin/env python3

import json

f = open('mydata.json')
team = json.load(f)

print(team['tux'])
print(team['tux']['health'])
print(team['tux']['level'])

print(team['beastie'])
print(team['beastie']['health'])
print(team['beastie']['level'])

# when finished, close the file
f.close()

这个方法实现了和保存文件大致相反的操作。使用一个变量 f 来表示打开了的文件,然后使用 json 模块中的 load() 方法读取文件中的数据并存放到 team 变量中。

其中的 print() 展示了如何查看读取到的数据。在过于复杂的字典中迭代调用字典键的时候有可能会稍微转不过弯来,但只要熟悉整个数据的结构,就可以慢慢摸索出其中的逻辑。

当然,这里使用 print() 的方式太不灵活了。你可以将其改写成使用 for 循环的形式:

for i in team.values():
    print(i)

使用 JSON

如上所述,在 Python 中可以很轻松地处理 JSON 数据。因此只要你的数据符合 JSON 的模式,就可以选择使用 JSON。JSON 非常灵活易用,下次使用 Python 的时候不妨尝试一下。


via: https://opensource.com/article/19/7/save-and-load-data-python-json

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

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