PHPNW13:回顾

PHPNW13 是第 6 届年度 PHPNW 会议,由 PHPNW 社区成员和 Magma Digital 组织。今年的会议在曼彻斯特会议中心举行的会议上有大约 420 人(我是帮手)。

我在实际会议前几个月开始参与 PHPNW13。当论文征集在 6 月结束时,我花了一个周末阅读提交的内容,以便我们可以选择会议上的哪些会议。在提交的 183 篇论文中(比去年多 20 篇),我们只需要挑选 35 篇左右的会议将在周末发表。最终的演讲选择非常好,从评论和评分来看,joind.in其他参加的会议也对他们的评价很好。

周末包括为期一天的辅导课程和为期两天的会议。

周五辅导日

今年我是由我的公司 (Access) 赞助参加培训日的,所以我第一天没有参与帮助人员。因此,我手里拿着笔记本电脑,开始与Marcus Deglos一起自动化所有事情作为早上的教程。这是对虚拟机管理系统 Vagrant 和 Puppet 供应平台的介绍。我过去曾玩过 Vagrant,但并没有真正了解它有多大用处,Marcus 向我们介绍了 Vagrant 入门以及如何以不同方式配置虚拟机。在我们设置好我们的虚拟机之后,我们开始研究 Puppet 来在它们上安装和配置软件。Vagrant 和 Puppet 都使用 Ruby 编程语言来设置服务器的配置,所以这也是一个研究简单 Ruby 语法的早晨。到早上结束时,我很高兴地设置了 Vagrant 文件并添加了 Puppet 配置。

吃了一顿午餐后,我和Andreas Hucks一起参加了“Symfony 组件可以为你做什么”的会议. 在本次会议中,我们采用了一个现有的遗留应用程序(用糟糕的 PHP 代码编写)并使用 Symfony 组件替换了应用程序的越来越多的部分,最终替换了整个应用程序。这对我来说很有趣,因为我一直在查看使用 Symfony 组件构建的新版 Drupal(版本 8),我可以看到随着旧应用程序被替换,系统中引入了少量 Drupal 8 源代码。我非常喜欢 Andreas 在本次会议期间介绍事物的方式,因为他鼓励我们添加更多内容并为自己思考。我发现我可以在代码上工作一段时间,直到我发现某些东西不起作用,因为显然缺少一个组件。然后 Andreas 会引入这个组件,我被困在上面的代码突然变得有意义了。

完成当天的课程后,我参加了黑客马拉松,每个人都参与了各种项目。我有一些社区项目的工作要做,所以我坐在“杂项”桌子上,研究它们并聊了几个小时。之后,我查看了我白天所做的一些事情,我对此表示赞赏,因为它帮助其中一些沉没了。

周六

我的助手职责始于周六早上,当时我帮助向到达会议的人分发会议 T 恤。我们有几百人在大约 40 分钟内通过,这确实很多,但事情似乎进展得很顺利,我们很快就让每个人都准备好开始会议。

今年的主题演讲被称为0x0F Ways To Be A Better Developer,由Lorna MitchellIvo Jansch主持. 这也是一个技术实验。由于我们无法让每个人都进入主剧院,因此决定将视频源流式传输到另一个房间,并在那里挤满人。而不是让那个房间里的人自己留在主剧院里,洛娜和伊沃在另一个房间里,每个视频都传到另一个房间。值得庆幸的是,一切都很顺利,两位主持人能够向两个房间的人进行精彩的演讲。演讲包含了很多关于如何成为更好的开发人员的指导。这包括了解最新教育、提出正确问题和照顾自己健康的方法。同样有趣的是,他们谈到了邓宁-库格效应,从本质上讲,知道很多的人低估了他们的能力,而了解很少的人则高估了他们的能力。自从几年前我了解到这种影响以来,我一直在与我一起工作的人身上注意到它,尤其是在那些我寻求知识和指导的人身上。

在主题演讲之后,我和Jeremy Quinton一起去了PHP 开发环境的未来. 这个演讲首先描述了 Jeremy 曾经遇到的一个常见问题,每个 PHP 开发人员都曾遇到过这个问题。PHP 开发曾经是一个设置本地 LAMP 堆栈或使用 XAMP 或 MAMP 等工具套件来设置某种 AMP 堆栈的过程。最重要的是,许多网站可能会在堆栈中的某个点包含 PHP,但是为了服务于应用程序而拥有各种不同的技术,并且这些技术因每个项目而变化。对此的解决方案是使用 Vagrant 和 Puppet 或 Chef 来为所需的开发环境设置和供应服务器。这里使用的配置技术既可以应用于 Vagrant 工具,也可以应用于实时环境,使开发和生产之间的更改尽可能简单。

我参加的下一个演讲是Vagrant And Ansible,由Michael Heap主持,几周前他还在 PHPNW 用户组发表了不同的演讲。Vagrant 相对容易掌握,我同意 Michael 的观点,当你第一次研究 Puppet 和 Chef 时,它们似乎是不可能的。我曾在各种博客文章中多次看到 Ansible 被提及,但从未真正了解如何开始使用它。Michael 谈到了如何开始使用该工具,然后启动了创建 Vagrant 实例并使用 Ansible 配置它的完整演示。这个演示的伟大之处在于,它运行得非常好,并且机器安装了完全正确的软件。在这次演讲之后,我绝对被 Ansible 的想法所吸引,实际上比我前一天玩 Puppet 的时间更喜欢它。

午餐由会议中心提供(非常好),然后是Volker Dusch 的Your Coding Standards Matter. 我在这里再次担任演讲者的影子,所以我帮助沃尔克设置并为他举起了计时标志。他的演讲围绕 PHPMD 和 PHP Codesniffer 工具及其在查看编码标准方面的作用展开。Volker 还将各种 PSR 标准分解为核心细节,并告诉我们为什么它们很重要。他还继续说,仅仅因为标准中有规则并不意味着你必须遵守它。例如,120 个字符的限制对 Volker 来说太低了,他说他的一些类名超过 120 个字符,所以他倾向于忽略这个规则。为了创建自定义 PHPCodesniffer 规则手册,您需要创建一个 XML 文档,这可能很复杂。Volker 创建了一个工具,允许您将这些 XML 规则放在一起并了解每个规则的实际作用。

紧随其后的是Seb Marek,他谈到了管理和监控应用程序性能。Seb 谈到了为什么性能很重要,然后查看了一些以不同方式分析应用程序的工具,展示了每个工具的输出示例。这些工具是 Xdebug、Xhprof 和 New Relic。这是对我自己见过(和使用)的一些工具的有趣看法,并让我深入了解其他人如何使用这些工具来监控他们的应用程序。

当天的最后一个会议(在结束笔记之前)是Silex 和 Cilex 如何成为媒体转码应用程序的粘合剂Stefan Koopmanschap. 这是一个案例研究,研究了 Stefan 为荷兰一家主要电视公司编写的简单转码管理应用程序。该应用程序实际上并没有对任何内容进行转码,但它负责确保为每个上线的电视节目进行正确的转码。Cilex 是一个使用 Symfony 组件构建的命令行框架,应用程序是使用这个框架组合在一起的。Stefan 然后告诉我们,随着需求的不断变化,他所维护的应用程序也是如此。当应用程序要求使用 Web 前端时,Stefan 使用 Silex(一个用 Symfony 组件构建的 PHP 微框架)来设置它。经过几次迭代更改后,他为正在进行的所有转码创建了一个完整的报告界面。还有少量面向 PHP 的客户端必须从服务器集合中为正确的播放器选择正确转码的视频。这段代码是用普通的 PHP 编写的,因为它需要非常简单和快速。Stefan 留给我们的信息是,为正确的工作选择正确的工具非常重要。从简单开始,但请确保您在开始项目工作时考虑最终结果可能会变成什么。变化即将发生,您需要确保提前考虑可能发生的任何变化,以便您可以为之做好准备。Stefan 留给我们的信息是,为正确的工作选择正确的工具非常重要。从简单开始,但请确保您在开始项目工作时考虑最终结果可能会变成什么。变化即将发生,您需要确保提前考虑可能发生的任何变化,以便您可以为之做好准备。Stefan 留给我们的信息是,为正确的工作选择正确的工具非常重要。从简单开始,但请确保您在开始项目工作时考虑最终结果可能会变成什么。变化即将发生,您需要确保提前考虑可能发生的任何变化,以便您可以为之做好准备。

最后一次会议让UKFast(白金赞助商)有机会谈论他们一直在努力的一些事情并分发10 个 Rasberry Pi。在此之后,在酒吧开业之前,有一系列的奖品颁奖(我在其中赢得了一本关于 Nginx 的书)。为所有参与者提供通常的免费酒吧和晚餐,我非常享受喝酒、吃饭和与新朋友和一些我有一段时间没见过的人交谈的时光。有人告诉我,今年在免费酒吧的收银台后面有很多钱,而且到 11:30 就全部用光了。

星期日

周日的第一场会议再次与Volker Dusch讨论,他正在讨论通过组件的垂直可重用性。这是一个案例研究,着眼于 ResearchGate 以及它是如何组合在一起的。这是一个非常有趣的观察,了解如何通过使用 JavaScript 加载功能的不同部分在网页中协同工作。他们使用了 Facebook 的一个名为 BigPipe 的系统,并将其改编成一个名为 Nozzle 的系统,这使得异步加载能够以更简洁的方式完成。Volker 还展示了 PHP5.5 中新的 yield 语法的一个很好的用例,这使他能够极大地简化他拥有的代码,同时仍然保持相同的功能。

在此之后,我与克林顿英格拉姆一起参加了网络安全会议。本次会议包括克林顿谈论存在什么样的威胁,为什么我们应该对此感兴趣以及可以为此提供哪些政府资金的几个例子。可以从政府那里获得资金用于安全研究,并确保我们客户的网站经过安全检查。这可能包括渗透测试或完整的安全审计。

当天的倒数第二次会议是与Lorna Mitchell 进行的,他正在谈论调试 HTTP。本次会议重点关注如何诊断向服务器发出的任何 HTTP 请求的问题,而不是查看 PHP 代码。这包括正常的 HTML 输出、AJAX 请求、JSON API 调用甚至移动通信。Lorna 使用了多种工具来演示调试 HTTP 请求,包括浏览器检查工具、wireshark、curl 和 Charles 代理。我之前没有听说过 Charles 代理,但是大约 10 分钟后我就完全被它迷住了。真正有用的是将其配置为将 API 调用从手机重定向到测试 API 平台的方式,而无需更改手机正在运行的代码。

最后(但并非最不重要)Rowan Merewood在主舞台上发表了闭幕主题演讲,Building Better Developers. 在这次演讲中,罗文拿了一个人体模型,并添加了不同的衣服和身体部位,以构建完美开发人员的照片。显然完美的开发者是不存在的,但罗文强调,我们应该努力提高自己,做到彼此优秀。演讲不仅有一些严肃的“带回家”的价值观和建议,而且还争夺会议中最有趣的演讲(除了 Volker 的编码标准演讲)。Rowan 是一位出色的演讲者,他引入了恰到好处的幽默来传达信息。他对这个话题的热情很有感染力,所以你不禁对他说的每一句话都点头。我多年前在 PHPNW 会议上引用了他的演讲。

最后

PHPNW 通常是一个精彩的会议,今年也不例外。所有的演讲都很棒,演讲者和以往一样出色。当我看到一个好的演讲时,我总是能分辨出来,因为我想离开并进行实验,这周我一直忙于查看周末听到的各种事情。赶上一些我有一段时间没见过的人并结识一些新朋友也很好。非常感谢所有参与让 PHPNW 变得更好的人,包括帮助者、演讲者、赞助商和所有购买门票的人。我已经很期待 PHPNW14 了 :)

特别感谢@phpcodemonkey 和@akrabat 拍摄了我在这篇文章中使用的一些令人惊叹的图像。

我已经阅读了一些关于会议的博客文章并看到了积极的反馈,但如果你参加了 PHPNW13,那么请在下面的评论部分告诉我你的想法。另外,不要忘记发表您的评论,joind.in以便演讲者可以看到他们的反馈。