DrupalCamp 伦敦 2014:回顾

伦敦城市大学校园是 Drupalcamp London 2014 的举办地,我作为代表参加了周末。这是一段时间以来的第一次会议,我没有以某种形式提供帮助、发言或组织,所以只是出现并放松一下就好了。我周五晚上从曼彻斯特出发,成功预订了我的 Airbnb 房间。

周六

(早餐前)主题演讲来自Mark O'Neil,内容是关于政府数字服务 (GDS) 以及他们如何努力使英国政府 IT 服务更好、更开放。Mark 是 GDS 的创新和交付主管,参与了该组织参与的大多数项目。他管理的团队只有十几个开发人员,但他们正在生产的东西现在被数百万人使用。其中最突出的是gov.uk网站。

英国每年在政府 IT 上花费 140 亿英镑,但这个领域由少数大型供应商主导。GDS 制定了 7 项原则,围绕确保用户获得他们需要的内容以及所生成的系统尽可能开放。很少有政府出席活动,所以马克在这里传播他和他的团队正在做的事情的信息。

Mark 的团队构建了一个名为 Needotron 的工具,用于收集需求。通过这个工具,他发现用户对需求的看法与普遍预期不同。然后,他们gov.uk根据收集到的需求进行构建。该gov.uk站点建立在开源和开放标准之上,但也具有开放的性能和开放的成本。不仅可以查看站点背后的代码,还可以查看站点的运行情况以及 GDS 对英国纳税人的花费。

GDS 团队的理念是为正确的工作使用正确的工具,因此 Drupal 是他们管理的系统的一部分。有几个卫星站点正在运行 Drupal,因为它非常适合用户的需求。使用 Drupal 完成了很多后台转换,例如文档管理系统。Drupal 充当了政府内部许多主要组件之间的粘合剂。

下一个演讲(吃完早餐后)是VijayaChandran Mani,他在谈论 Drupal 8 中的配置模式。不幸的是 VijayaChandran 实际上并没有说明配置模式是什么,所以我在开始时有点迷茫讲话。模式配置是一种定义表将在 Drupal 8 中具有哪些字段的方式。模式配置使用 YAML 文件来描述表,并受到名为 Kwalify 的软件的启发。

所有模式定义都存储在 lib/config/schema 下的模块目录中,该目录是用 PSR0 自动加载器标准定义的。所有模式配置都保存在带有 *.schema.yml 文件名后缀的文件中。模式文件还用于定义翻译和验证信息。表字段的数据类型在 datatye.schema.yml 中定义,任何新数据类型在使用之前必须首先在这些文件中定义。

Vijaya Chandran 最后展示了几个与模式配置一起工作的模块。一个突出的是配置检查器,它创建一个配置设置和更新表单,允许配置配置。

紧接着是Rupert Jabelman的演讲 Apache Solr: Beyond the search page。这是一个有趣的演讲,着眼于 Apache Solr Drupal 模块(而不是使用 Search API 模块)以进行扩展。

Apache Solr 模块是 Solr 交互的一个很好的起点,尤其是对于开发人员。它有许多钩子可以让人们开始开发 Solr 搜索配置。该模块允许创建搜索页面和使用自定义过滤器,这些过滤器使用 Lucene 查询以某种方式限制内容。Solr 实际上只是一个 Web 服务(包装了 Lucene),因此可以使用 URL 调用它,通常作为 GET 请求。URL 可以多次包含相同的参数,不允许这有点 PHP 主义。

Rupert 展示了他如何创建一组以各种方式显示内容的搜索结果页面。一个有趣的页面包含许多不同实体的结果,其中许多链接来自多个其他实体之一的数据。该页面无需从 Drupal 加载单个数据项即可显示这些结果,这一切都基于已存储在 Solr 中的结果。

这个演讲真的很有趣,而且介绍得很好。它也与我非常相关,特别是对于一些即将使用 Solr 来存储和检索结果的项目。

午餐包括一套棕色纸袋,里面有一个三明治、薯片、一瓶水和一块饼干。我很高兴与一些我有一段时间没见过的人和我以前从未见过的人共进午餐。

午饭结束后,我去看了Sven Bery Ryen,他讲了一个关于使用规则控制 Drupal Commerce 的演讲。规则模块创建了一个基于事件和条件执行操作的框架。我过去曾使用过规则和 Drupal Commerce,所以我希望得到一些使用它们的指导和最佳实践,尤其是在一些更复杂的规则配置方面。

Sven 试图展示一些使用 Drupal Commerce 的规则示例。不幸的是,他想展示的本地演示站点无法正常工作,因此他最终向我们展示了最近客户站点的示例。该站点位于挪威的事实使事情变得有点难以理解。这确实是现场演示的问题,有时它们不会按预期进行。

巴尼·哈蒙德( Barney Hammond ) 接下来发表了他的演讲,即 Devops:下一代。我在午餐时遇到了 Barney,并就他的谈话内容聊了几句,所以我继续表示我的支持(还有一个没用的 Apple 遥控器)。这是我周末看到的最好的演讲之一。它很有趣,内容丰富,有趣,并且比在 Reddit 上度过的一个下午还包含更多的模因和星际迷航参考。

系统管理员和开发人员截然相反。系统管理员一生都在保持事物不变,而开发人员则一生都在创造新的东西。这就是 DevOps 的用武之地,它位于这两个世界之间的中间地带。实际上,开发人员需要知道的不仅仅是推送到 github,系统管理员需要时不时地使用一些编程。

DevOps 的 5 条原则是监控、分析、安全、性能和自动化。Barney 逐一介绍了为什么它很重要,以及他使用哪些工具和资源来实现这些。提到了很多工具和标准,我将在接下来的几周内查看我的笔记,以便我可以快速掌握它们。

本次会议向我展示了我职业道路的下一个阶段。在过去的几年里,我越来越多地参与系统管理,这次演讲向我展示了我应该做的事情以及我应该去的地方。我以前每次需要做任何事情时都必须登录服务器,所以不久前我决定做点什么。因此使用 Phing 和 Ansible 等工具在服务器上执行操作,使用 Xhprof 和 Munin 来密切关注服务器的性能,但是当出现问题时我仍然必须登录到该框,并且我想查看日志包含的内容. 所以下一步就是使用 Barney 提到的一些日志工具来组织系统日志。Barney 在演讲中实际上谈到了 Ansible,所以我和他谈谈他如何使用它对我来说是件好事。

当天的最后一节是与John Ennew 的并发性介绍。这是关于如何通过使用并发和并行执行导入部分来使 Migrate 模块的运行速度提高许多倍。Migrate 做了很多工作,但它对服务器没有太大的压力,因此将 Migrate 的执行拆分成并行运行的部分,可以允许服务器使用更多资源运行 migrate。

为了让 Migrate 模块并行运行,John 创建了一个 Drush 组件。有了这个,约翰就能够通过并行运行 2-4 个进程来展示速度的提高。他做了一个现场演示,将 100 个节点导入一个站点,耗时大约 2 分钟(在一次演讲中很长一段时间)。然后,他将进程数增加到 2 个,并将时间从 2 分钟减少到大约 20 秒。

这是对通过提供更多资源来加速 Migrate 的过程的一个很好的介绍。它还包含足够的警示故事,关于密切关注服务器拥有的资源量并确保所有内容都正确导入。我想我将在今年晚些时候进行一些迁移时使用他编写的插件,因为它可以让我在几分钟内而不是几个小时内运行数千个节点的迁移。

最后一节课结束后,我开始参加在屠宰羔羊场举行的周六晚上的社交活动。

星期日

周日以 Drupal 协会副主任 Megan Sanicki 的主题演讲开始。她谈到了她在伦敦举办 DrupalCon 的经历,以及如何意识到世界(不仅仅是英国)需要 Drupal 协会更多的区域代表。例如,英国现在有一个银行账户,用于获取本地融资机会。梅根向我们讲述了 Drupal 协会的历史,以及它是如何在短短几年内从 2 人发展到 30 人的团队的。

2014 年,Drupal 协会有许多倡议,一些是新的,一些是正在进行的。2014 年最重要的两项举措是大幅改进drupal.org网站并成功推出 Drupal 8。

周末的倒数第二节是Oliver Davies,他正在谈论 git flow。这是 Vincent Driessen 的原创想法,现在是提供分支模型的工具集合。该模型是,每次创建任何新功能时,它都会获得自己的“功能”分支,一旦完成,此分支将与开发分支合并。

git flow 提供的分支模型可以总结如下。

  • master是生产代码所在的地方,不会直接提交。相反,更新从开发分支(或修补程序分支)合并到此分支并标记。

  • develop是开发代码,虽然可以直接提交到这个分支,但应该避免。这个分支应该真正包含稳定的代码。

  • 功能本身并不是一个真正的分支,而是多个分支。它们用于在应用程序上开发新功能,一旦完成,功能分支将与开发分支合并。这种合并被称为“释放”。

  • release是用于测试单个功能的临时发布分支。

  • hotfix是一个紧急分支,用于修复 master 分支中的东西。master 分支被分叉到一个 hotfix 分支,一旦 hotfix 完成,它就会合并回 master 分支。

  • support用于支持旧版本的 master 分支。

Git 流程允许将生产代码和开发代码分开,这意味着您可以更灵活地开发应用程序。该过程鼓励协作和同行评审,并导致更好的代码质量。

在参加这次演讲时,我发现 git flow 是使用 git 的完美补充,我应该在不久前使用它。过去我遇到过这样的情况,我需要将一些新代码应用到现有网站,并且不得不进行一些分支处理,以便在进行积极开发的同时将修复应用到实时站点。Git 流程通过拥有(更)严格的工作流结构来解决这个问题(以及许多其他问题),以便允许 git 中的分支模型在日常开发环境中实际工作。

最后一场会议是Konstantin Kudryashov,他的演讲是通过软件实现价值 - BDD 管道。这是对从捕获客户需求到构建真正有价值的应用程序的整个软件开发过程的非常有趣的分析。

这基本上有两个部分。第一个是捕获系统将执行哪些操作以促进最大投资回报的方法,然后根据这些要求创建一组功能。第二个是插入调查过程中创建的需求,然后使用 Behat 运行行为测试。

Konstantin 提取应用程序需求并将它们直接插入 Behat 的方式在我的脑海中留下了深刻的印象。详细描述系统的多页文档与测试该系统之间存在一些脱节。通过将文档缩减为一组简单的功能,您可以简化文档过程,并将这些功能直接插入一些行为测试中。Konstantin 说,他的团队已经习惯于做这个过程,他们现在很少需要调整行为测试系统能够理解的功能,因此在功能和开发之间有一个简化的过程。

最后一节课后,我吃了一些午餐,然后参加了当时正在进行的一节课。我选择进入 Drupal Ladder 会话是为了看看是否有什么我可以学到的东西可以帮助我最终以某种方式为 Drupal 核心做出贡献。事实证明,如果有信心尝试并提交补丁,我唯一缺乏的就是。

顺便说一句,如果您还没有使用 Dredditor 来浏览drupal.org网站,那么您应该使用它,因为它提供了一系列工具,可以让您更轻松地查看问题队列。Dredditor 是一个浏览器插件,可用于 Chrome 和 Firefox。

DrupalCamp London 是一个非常好的活动,很高兴认识了一段时间未见的人并结交了一些新朋友。我有很多笔记要复习,这通常是一个很好的迹象,表明会谈也很顺利。在吸收 Drupal 知识方面,以及了解其他人如何建立和组织营地方面,这对我来说都很有趣。

我只是想借此机会感谢组织者和赞助商举办这么好的活动。

周末的一些随机带回家的课程。

  • 开始使用 git flow。

  • 减少我(已经很低)实际登录服务器的需求。

  • 亚历克斯·伯罗斯 (Alex Burrows) 非常喜欢大声播放音乐 :)

  • 质疑功能如何为项目带来价值。

  • 使用 BDD。

  • 为 Drupal 做贡献不应该是可怕的。