蚊章汇 - D Ruth Bavousett
type: channel
link: https://linuxcn.bwsl.wang/author/447/
description: D Ruth Bavousett
items: 使用 Cozy 搭建个人云
items: 使用 Elizabeth 为应用生成随机样本数据
items: 如何用 R 语言的 Shiny 库编写 web 程序
items: 标志性文本编辑器 Vim 迎来其 25 周年纪念日

使用 Cozy 搭建个人云
type: item
date: 2017-04-24T17:03:00+08:00
description: 我认识的大部分人为了他们的日历、电子邮件、文件存储等，都会使用一些基于 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 界面文件和很多分支一样，我使用 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…

使用 Elizabeth 为应用生成随机样本数据
type: item
date: 2017-03-06T17:30:00+08:00
description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.不，我的文章没有被 Lorem ipsum 生成器劫持（LCTT 译注：Lorem ipsum，中文又称“乱数假文”，只是一段用来测试排版效果的占位文字，没有实际的含义）。作为本月的 Nooks＆Crannies 专栏文章，我发现了一个有趣的小 Python 库，以帮助开发人员为其应用程序生成随机数据。它被称为 Elizabeth。它由 Líkið Geimfari 编写，并在 MIT 许可证下发行，Elizabeth 以 21 个不同本地化信息提供了 18 种数据提供器，可用于生成随机信息（LCTT 译注：不仅是随机数），包括姓名和个人特征、地址、文本数据、交通信息、网络和 Internet 社交媒体数据、数字等等。安装它需要 Python 3.2 或更高版本，您可以使用 pip 或从 git 仓库安装它。在我的测试机上，我在一个全新安装的 Debian Jessie 上使用 pip 来安装它，要做的就是 apt-get install python3-pip，它将安装 Python 和所需的依赖项。然后 pip install elizabeth，之后就安装好了。只是为好玩，让我们在 Python 的交互式解释器中为一个人生成一些随机数据：>>> from elizabeth import Personal >>> p=Personal('en') >>> p.full_name(gender="male") 'Elvis Herring' >>> p.blood_type() 'B+' >>> p.credit_card_expiration_date() '09/17' >>> p.email(gender='male') 'jessie7517@gmail.com' >>> p.favorite_music_genre() 'Ambient' >>> p.identifier(mask='13064########') '1306420450944' >>> p.sexual_orientation() 'Heterosexual' >>> p.work_experience() 39 >>> p.occupation() 'Senior System Designer' >>> 在代码中使用它就像创建一个对象那样，然后调用要你需要填充数据的对应方法。Elizabeth 内置了 18 种不同的生成工具，添加新的生成器并不困难；你只需要定义从 JSON 值集合中获取数据的例程。以下是一些随机文本字符串生成，再次打开解释器：>>> from elizabeth import Text >>> t=Text('en') >>> t.swear_word() 'Rat-fink' >>> t.quote() 'Let them eat cake.' >>> t.words(quantity=20) ['securities', 'keeps', 'accessibility', 'barbara', 'represent', 'hentai', 'flower', 'keys', 'rpm', 'queen', 'kingdom', 'posted', 'wearing', 'attend', 'stack', 'interface', 'quite', 'elementary', 'broadcast', 'holland'] >>> t.sentence() 'She spent her earliest years reading classic literature, and writing poetry.' 使用 Elizabeth 填充 SQLite 或其它你可能需要用于开发或测试的数据库并不困难。其介绍文档给出了使用 Flask 这个轻量级 web 框架的一个医疗应用程序示例。我对 Elizabeth …

如何用 R 语言的 Shiny 库编写 web 程序
type: item
date: 2017-03-04T18:48:16+08:00
description: 我这个月在写一些更加长的文章，所以你们可以在几周后再来看看。本月，我想简要地提下我自己一直在玩的一个很棒的 R 库。我的一个亲密朋友最近在用 R 编写东西。我一直都对它很感兴趣，也一直在试图挤时间，学习更多关于 R 的知识以及可用它做的事情。探索 R 的超强数字处理能力对我而言有些困难，因为我并不如我朋友那样有一个数学头脑。我进展有点慢，但我一直试图将它与我在其他领域的经验联系起来，我甚至开始考虑非常简单的 web 程序。Shiny 是一个来自 RStudio 的工具包，它让创建 web 程序变得更容易。它能从 R 控制台轻松安装，只需要一行，就可以加载好最新的稳定版本来使用。这里有一个很棒的教程，它可以在前面课程基础上，带着你理解应用架设的概念。 Shiny 的授权是 GPLv3，源代码可以在 GitHub 上获得。这是一个用 Shiny 写的简单的小 web 程序：library(shiny) server <- function(input, output, session) { observe({ myText <- paste("Value above is: ", input$textIn) updateTextInput(session, "textOut", value=myText) }) } ui <- basicPage( h3("My very own sample application!"), textInput("textIn", "Input goes here, please."), textInput("textOut", "Results will be printed in this box") ) shinyApp(ui = ui, server = server) 当你在输入框中输入文字时，它会被复制到输出框中提示语后。这并没有什么奇特的，但它向你展示了一个 Shiny 程序的基本结构。“server”部分允许你处理所有后端工作，如计算、数据库检索或程序需要发生的任何其他操作。“ui”部分定义了接口，它可以根据需要变得简单或复杂。包括在 Shiny 中的 Bootstrap 有了大量样式和主题，所以在学习了一点后，就能用 R 创建大量功能丰富的 web 程序。使用附加包可以将功能扩展到更高级的 JavaScript 程序、模板等。有几种方式处理 Shiny 的后端工作。如果你只是在本地运行你的程序，加载库就能做到。对于想要发布到网络上的程序，你可以在 RStudio 的 Shiny 网站上共享它们，运行开源版本的 Shiny 服务器，或通过按年订阅服务从 RStudio 处购买 Shiny Server Pro。经验丰富的 R 大牛可能已经知道 Shiny 了；它已经存在大约几年了。对于像我这样来自一个完全不同的编程语言，并且希望学习一点 R 的人来说，它是相当有帮助的。作者简介：D Ruth Bavousett - D Ruth Bavousett 作为一名系统管理员和软件开发人员已经很长时间了，她的专业生涯开始于 VAX 11/780。在她的职业生涯（迄今为止）中，她花费了大量的时间在满足库的需求上，她自 2008 年以来一直是 Koha 开源库自动化套件的贡献者. Ruth 目前在休斯敦的 cPanel 任 Perl 开发人员，他也作为首席员工效力于双猫公司。via: https://opensource.com/article/17/1/writing-new-web-apps-shiny作者：D Ruth Bavousett 译者：geekpi 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出

标志性文本编辑器 Vim 迎来其 25 周年纪念日
type: item
date: 2016-11-08T23:03:35+08:00
description: 让我们把时钟往回拨一点。不，别停…再来一点……好了！在 25 年前，当你的某些专家同事还在蹒跚学步时，Bram Moolenaar 已经开始为他的 Amiga 计算机开发一款文本编辑器。他曾经是 Unix 上的 vi 用户，但 Amiga 上却没有与其类似的编辑器。在三年的开发之后，1991 年 11 月 2 日，他发布了“ 仿 vi 编辑器 （ Vi IMitation ） ”（也就是 Vim）的第一个版本。两年之后，随着 2.0 版本的发布，Vim 的功能集已经超过了 vi，所以这款编辑器的全称也被改为了“ vi 增强版 （ Vi IMproved ） ”。现在，刚刚度过 25 岁生日的 Vim，已经可以在绝大部分平台上运行——Windows、OS/2、OpenVMS、BSD、Android、iOS——并且已在 OS X 及很多 Linux 发行版上成为标配软件。它受到了许多赞誉，也受到了许多批评，不同组织或开发者也会围绕它来发起争论，甚至有些面试官会问：“你用 Emacs 还是 Vim？”Vim 已拥有自由许可证，它基于 慈善软件证书 （ charityware license ） （“帮助乌干达的可怜儿童”）发布，该证书与 GPL 兼容。Vim 是一个灵活的、可扩展的编辑器，带有一个强大的插件系统，被深入集成到许多开发工具，并且可以编辑上百种编程语言或文件类型的文件。 在 Vim 诞生二十五年后，Bram Moolenaar 仍然在主导开发并维护它——这真是一个壮举！Vim 曾经在超过 20 年的时间里数次间歇中断开发，但在 2016 年 9 月，它发布了 8.0 版本，添加了许多新功能，为现代程序员用户提供了更多方便。很多年来，Vim 在官网上售卖 T 恤及 logo 贴纸，所得的销售款为支持 ICCF——一个帮助乌干达儿童的德国慈善机构做出了巨大贡献。Vim 所支持的慈善项目深受 Moolenaar 喜爱，Mooleaar 本人也去过乌干达，在基巴莱的一个儿童中心做志愿者。Vim 在开源历史上记下了有趣的一笔：一个工程，在 25 年中，坚持由一个稳定的核心贡献者维护，拥有超多的用户，但很多人从未了解过它的历史。如果你想简单的了解 Vim，请访问它的网站，或者你可以读一读 Vim 入门的一些小技巧，或者在 Opensource.com 阅读一位 Vim 新用户的故事。via: https://opensource.com/life/16/11/happy-birthday-vim-25作者：D Ruth Bavousett 译者：StdioA 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出