Обзор конференций, на которых мы побывали в 2016 году

в 7:48, , рубрики: badoo, Go, mysql, php, Блог компании Badoo, конференции, разработка, Разработка веб-сайтов, тестирование, Тестирование веб-сервисов

Обзор конференций, на которых мы побывали в 2016 году - 1

Возможно, вы уже слышали о том, что в Badoo каждый год в декабре мы с коллегами ходим в баню составляем календарь конференций для технарей по всему миру, на которые хотим попасть. И 2016 год не стал исключением: у нас в списке больше ста конференций, но мучить отчетами с каждой мы вас, конечно, не будем. Вместо этого мы выбрали лучшие, по мнению наших разработчиков, и собрали небольшие отзывы очевидцев из Badoo. Спойлер: конференций восемь. Спойлер второй: некоторые отзывы не такие уж и небольшие. Поэтому ниже – оглавление.

Оглавление

1. CodeFest, Новосибирск, Россия
2. SQA Days 19, Санкт-Петербург, Россия
3. DevConf, Москва, Россия
4. Velocity, Нью-Йорк, США
5. GopherCon, Денвер, США
6. Percona Live, Амстердам, Нидерланды
7. ZendCon, Лас-Вегас, США
8. HighLoad++, Москва, Россия

1. CodeFest, Новосибирск, Россия, 26–27 марта

Обзор конференций, на которых мы побывали в 2016 году - 2

Здесь вы можете послушать и поговорить про разработку, управление проектами и тестирование. Проводится конференция CodeFest с 2010 года, мы в ней участвуем с 2013-го, каждый раз отправляя в далёкий Новосибирск большую делегацию. С каждым годом главная IT-конференция Сибири (да и в принципе одна из крупнейших в России) становится всё богаче на интересные доклады и квартирники, а душевности и активности CodeFest’а позавидует большинство конкурентов.

Илья Кудинов, старший QA-инженер, Relz

Обзор конференций, на которых мы побывали в 2016 году - 3

Я на этой конференции выступал с докладом, и мне очень помогло то, что организаторы оказались общительными и доброжелательными. CodeFest проводится не первый год и на одной и той же площадке, так что ничего удивительного в том, что пространство организовано хорошо. Мне очень понравились активности в зоне корпоративных стендов: в одном из них был барбершоп (!), о чём ещё говорить!

Я не только выступал, но и много слушал других ребят. Всё было очень здорово, но, наверное, общение с докладчиками после их выступления – это самая интересная часть любой конференции (как для слушателей, так и для докладчиков, поверьте мне на слово).

Особенно запомнились success-stories от разработчика Appium (приятно слушать об успехе фреймворка, который мы начали использовать, как говорится, before it was cool) и заводной «самовоспитательный» доклад от Максима Дорофеева.

Мой вам совет: если хотите услышать потенциально популярный доклад, приходите в зал пораньше, потому что иначе вам придётся стоять в дверях, проходах или даже сидеть на полу.

Обзор конференций, на которых мы побывали в 2016 году - 4

Антон Турецкий, системный администратор, banuchka

Обзор конференций, на которых мы побывали в 2016 году - 5

Я уже не в первый раз приезжал на CodeFest. Это конференция, на которую очень большое количество людей едут за получением знаний. Для меня это какая-то обратная сторона: здесь люди смотрят на тебя во время выступления и внимательно слушают ответы на вопросы, которые задали. На конференции почти нет пафоса, если уместно так говорить. Наверно, любой, кто хотя бы раз бывал на CodeFest скажет, что там дружественная и семейная атмосфера.

К сожалению, секция по администрированию не очень сильна, серьёзных докладов, интересных мне, я не встретил. Зато мне понравились несколько выступлений из-за докладчиков, их манеры повествования и поведения на сцене.

Если вы планируете поехать на CodeFest в следующем году, то будьте готовы к удалённости площадки от центра города (если будете там жить) и к безумным таксистам Новосибирска.

2. SQA Days 19, Санкт-Петербург, Россия, 20–21 мая

Обзор конференций, на которых мы побывали в 2016 году - 6

Считается одной из лучших конференций в России и СНГ для тестировщиков и всех заинтересованных. Проводится дважды в год, в разных городах России и стран СНГ, объединяя в себе профессионалов контроля качества со всей Европы. В рамках большинства «эпизодов» SQA Days проводятся «английские» дни, на которых со слушателями делятся своим опытом сотрудники иностранных компаний. А об afterparty конференции (традиционно и очень обдуманно устраиваемой в конце ПЕРВОГО дня конференции) ходят легенды.

Владимир Щербаков, QA-инженер

Обзор конференций, на которых мы побывали в 2016 году - 7

Я на этой конференции был не первый раз. Впечатления о питерской остались такие же, как о других: организовано всё очень хорошо, гостям не дают скучать, много докладов на выбор. В целом организация – на высоком уровне, очереди я встречал только на обеде, в остальных случаях места в аудиториях всегда было достаточно, доклады начинались по расписанию.

Из выступлений мне больше всего запомнился доклад по логированию системных ошибок, выступал Лев Астахов на тему «Инструментация среды исполнения в арсенале тестировщика». Здесь вы можете посмотреть видео с его выступления, а здесь – презентацию. Лев рассказал, как их команда собирает данные о выполнении, ошибках программы. На мой взгляд, очень полезная штука, которая позволяет обнаружить скрытую проблему без глубокого изучения – всё перед глазами.

Побывать на SQA Days я бы порекомендовал всем QA-специалистам: думаю, что каждый найдёт для себя доклады по своему уровню знаний и интересам, а в кулуарах всегда можно пообщаться с людьми из разных компаний и с докладчиками, чтобы задать им вопросы.

3. DevСonf, Москва, Россия, 17 июня

Обзор конференций, на которых мы побывали в 2016 году - 8

Ежегодная конференция, посвящённая ведущим технологиям программирования и web-разработки. Мы публиковали часть видео с выступлений, если вы хотите освежить их в памяти.

Саша Крашенинников, руководитель Data Team, alexkrash

Обзор конференций, на которых мы побывали в 2016 году - 9

Я не в первый раз побывал на этой конференции, заметил, что новая площадка гораздо лучше прежней, но немного великовата для мероприятия такого уровня. В 2015 году я был докладчиком, а в этом – ходил поддержать наших ребят. Не могу не похвалить коллег: мы, как всегда, молодцы. Подготовили качественный материал. Рассказали про грабли, которые обскакали (все врут – нельзя верить данным, приходящим с устройств пользователей). Андрей Воликов привёл обзор существующего математического аппарата для решения задач геолокации и поиска принадлежности точки полигону. Спойлер для тех, кто не смотрел выступление: как окончательное решение был предложен программный интерфейс S2 от Google.

Ещё мне запомнился доклад про микросервисы на Go: очень опытный спикер, его подача материала зацепила. Тема оркестрации и хореографии сервисов на основании программного решения Consul – этот доклад можно положить в «копилку», если стоит задача построения «с нуля» или адаптации проекта к описанной архитектуре. Вадим рассмотрел комплекс того, с чем приходится сталкиваться при построении микросервисной архитектуры: мониторинг, масштабирование и прочее.

Вопреки сложившемуся мнению, DevConf давно перестала быть ориентированной исключительно на PHP-разработчиков, и теперь здесь можно послушать доклады про архитектуры, работу с данными и «кухню» различных проектов.

Дима Костин, PHP-разработчик, DsTr123

Обзор конференций, на которых мы побывали в 2016 году - 10

Я запомнил три доклада с конференции. Выступление про то, как написать highload-приложение на Go: очень структурировано было изложено использование его в production, основные подводные камни, дебаггинг в прод-среде.

Алексей Акулович из «ВКонтакте» рассказал про аудиоотпечатки ВК, которые позволяют находить дубликаты песен вне зависимости от источника записи и смещения его по времени. Про архитектуру разных проектов всегда слушать интереснее всего. Понравился масштаб фичи и уникальность. Сам доклад содержал историю развития фичи, сведения о том, какова она сейчас, с какими проблемами сталкивались в ходе её создания.

Полезным оказался и доклад про HTTP2: просто и ясно было рассказано, какие проблемы можно решить с его помощью.

4. Velocity, Нью-Йорк, США, 20–23 июня

Обзор конференций, на которых мы побывали в 2016 году - 11

Конференция для DevOps, web-разработчиков, техлидов, где выступают сотни именитых спикеров.

Игорь Сотников, старший PHP-разработчик

Обзор конференций, на которых мы побывали в 2016 году - 12

Больше всего мне запомнились не доклады, а мастер-классы. Это отдельная секция, она проходит за день до основной конференции и оплачивается дополнительно. Я ходил на service workers и performant accessibility.

На первом мастер-классе мы слушали лектора, он давал примеры кода, и часть действий можно было сразу же выполнять на ноутбуке. На втором – всё было достаточно банально: мы просто слушали лектора, выступающего с презентацией.

Был ещё один мастер-класс: после краткой лекции по архитектуре присутствующих разбили на группы человек по семь и дали задание набросать примерный план архитектуры для предложенных вводных.

Все видео с конференции можно найти здесь.

Из забавного: между докладами люди кучками сидели на полу, после выяснилось, почему: не хватало розеток. Для тех, кто планирует поехать на Velocity в новом году: большая часть докладчиков – либо спонсоры, либо авторы O’Reilly, поэтому, если доклад не спонсорский, значит, велика вероятность найти профильную брошюру O’Reilly и ознакомиться с тезисами.

5. GopherCon, Денвер, США, 11–13 июля

Обзор конференций, на которых мы побывали в 2016 году - 13

Фото dnabyte

GopherCon – это самая первая и большая конференция по Go для разработчиков, фанатов и тех, кто хочет научиться. Проходит она с 2015 года в Денвере (США). Недалеко от него расположен город South Park (тот самый). Здесь дарят мягкую игрушку – маскота Go, которым можно похвастаться.

Вадим Истратов, глава разработки проекта «Биллинг», WASD42

Обзор конференций, на которых мы побывали в 2016 году - 14

Организация конференции была на высочайшем уровне, несмотря на количество посетителей: 1400 участников! Очень быстрая регистрация, большие кондиционированные залы, неплохой Wi-Fi по всему конференц-центру. Отличные кофе-брейки и обед.

Обзор конференций, на которых мы побывали в 2016 году - 15

Но впечатления остались смешанные: с одной стороны – мощные, интересные и зрелищные доклады от евангелистов Go и много полезных tutorial-сессий, с другой – откровенно слабые доклады в духе «как я провёл лето или для чего ещё можно использовать Go». Понятно, что GopherCon – узкопрофильная конференция, но наличие докладов про IDE, «сырые» дебаггеры и тому подобное несколько разочаровали. Осталось ощущение, что на три полноценных дня тем попросту не хватило. Конференции по JavaScript и PHP, как правило, разбавляют основные потоки связанными темами.

Обзор конференций, на которых мы побывали в 2016 году - 16

Зацепила интересная идея с HackDay, когда любой желающий со своим проектом мог получить реальную помощь от других гоферов.

Из докладов больше всего понравились выступления The Design of the Go Assembler (Rob Pike) об истории Go-ассемблера и его внутреннем устройстве и Understanding nil (Francesc Campoy) про особенности использования nil-значений в Go, о том, что он из себя представляет, и основных ошибках, с ним связанных.

Обзор конференций, на которых мы побывали в 2016 году - 17

Основные потоки шли с online-трансляцией и текстовой трансляцией в реальном времени (!), что позволило тем, для кого английский язык всё ещё является проблемой, лучше понимать выступления.

Не игнорируйте afterparty – это не менее важная часть конференции, чем выступления. Именно там можно пообщаться с гуру один на один и познакомиться с интереснейшими людьми.

Конференция заканчивалась в пять часов вечера, так что было время поездить по округе. Я не могу не поделиться с вами хотя бы одной фотографией:

Обзор конференций, на которых мы побывали в 2016 году - 18

Фото с горы Эванс

Для тех, кто пропустил конференцию: все видео выступлений и ещё здесь, презентации спикеров.

Для тех, кто планирует посетить GopherCon в следующем году: если конференция снова будет проходить в Денвере, то нужно учитывать, что вы будете находиться на высоте 1600 метров над уровнем моря, страдать от jet-лага и жары, то есть будете быстро уставать.

Сергей, техлид в отделе «Биллинг», Domini

Я часто скептически отношусь к конференциям, так как многие доклады – всего лишь пересказ мануалов и форумов, не несущий достаточно концентрированной информации, чтобы потратить на них целый день. Или анонс нового продукта, больше похожий на пресс-релиз, нежели на разговор технических специалистов. И лишь малая толика – уникальный неповторимый опыт, ради которого, на мой взгляд, и стоит их посещать. Относительно GopherCon у меня были хорошие ожидания и, к счастью, они подтвердились.

Конференция получилась, на мой взгляд, очень сбалансированной: технические доклады были разбавлены достаточно абстрактными, а заскучать от всего этого не давали прикольные доклады на темы, не связанные напрямую с программированием, но связанные с историей Go.

Обзор конференций, на которых мы побывали в 2016 году - 19

Что касается организации, она была на высочайшем уровне: рекомендованный организаторами отель был замечательный и находился очень недалеко от места проведения конференции, было снято достаточно площадей. Технологическая поддержка докладчиков была выше всяких похвал, вплоть до субтитров в реальном времени. В зале между докладами удалось встретить множество интересных собеседников. Нельзя не отметить и прекрасные виды с гор Денвера, хоть это и не имеет прямого отношения к конференции.

Из докладов мне больше всего запомнились Understanding nil и Don’t Just Check Errors, Handle Them Gracefully. Первый, как можно догадаться, про назначение nil в Go, а второй – про то, как правильно обрабатывать ошибки (я видел немало споров об этом). Оба докладчика рассказывали не про набор постулатов и вынужденные меры достичь того или этого, а выстроили стройную логическую цепочку, показывающую, почему та или иная часть языка сформулирована таким образом, а не иначе. И, понимая эту логику, показанные подходы принимаешь сразу без колебаний. Но на этом всё не заканчивается. Получив отличную базу, дальнейшие рассуждения на эти темы можно продолжать самостоятельно, что, на мой взгляд, отличный результат для доклада.

Отдельно хотелось бы отметить доклад Visualizing Concurrency in Go, вызывающий настоящий wow-эффект, особенно на большом экране.

Ещё понравились доклады Communicating Sequential Goroutines и cgo: Safely Taming the Beast о таких низкоуровневых вещах, о которых в мануале не напишут.

Ну и напоследок нельзя не упомянуть доклад The Go Gopher: A Character Study Рене Френч про маскота Go.

6. Percona Live, Амстердам, Нидерланды, 3–5 октября

Обзор конференций, на которых мы побывали в 2016 году - 20

Percona Live – конференция, которую проводит консалтинговая компания Percona. Посвящена экосистеме MySQL и другим базам данных.

Алексей Рыбак, глава разработки Badoo, fisher

Обзор конференций, на которых мы побывали в 2016 году - 21

Конференции разработчиков баз данных – одни из немногих, где можно узнать, как делаются большие проекты с инженерной точки зрения. Percona уже много лет проводит свою конференцию не только в Калифорнии (они начинали как мини-конференция параллельно с главной конференцией MySQL), но и в Европе.

Конференция в Амстердаме мне показалась интересным событием, поскольку, по-моему, это единственная европейская конференция такого уровня (не считая России, HighLoad++, на мой взгляд, в этом смысле абсолютно уникальна). Я уже был на Percona Live в 2012 году, когда она проводилась в Лондоне. Конференция тогда была меньше, сессия докладов длилась всего один день. С 2015 года Percona умудряется собирать докладов уже на два дня, а в этом году в рамках конференции даже прошёл PostgreSQL Day.

В целом было много народу из крупных проектов: Facebook (четыре доклада, самый интересный, на мой взгляд, был у Mark Callaghan про MyRocks и MongoRocks), куча докладов от Percona, Oracle, MariaDB и от других больших проектов: Uber (про тот самый переход с PostgreSQL на MySQL, вызвавший небезызвестное бурление в интернетах), Dropbox, Yandex (ClickHouse!), Badoo (от нас было два доклада: про Spark и про Pinba).

Обзор конференций, на которых мы побывали в 2016 году - 22

Тони Довгаль рассказывает про Pinba и его использовании в Badoo

Сразу скажу, если вам интересна тематика, рекомендую изучить программу конференции самостоятельно и посмотреть все презентации, это очень просто: первый день и второй. Кликаете на доклад и смотрите слайды, тут же можно их загрузить себе, очень удобно.

Обзор конференций, на которых мы побывали в 2016 году - 23

Саша Крашенинников выступает с докладом от Badoo

У международных конференций есть ряд особенностей, которые кажутся большими минусами: очень много докладов параллельно. Одновременно идут пять–десять докладов, поэтому крайне важно изучать программу заранее и планировать день. Те, кто был на HighLoad++ в этом году, должны хорошо понимать, о чём я: для наших технических конференций это нетипично, мы привыкли к одному–двум потокам, но это – неизбежное будущее, как и рост выставочных зон. ;)

Я послушал много докладов, но не могу сказать, что мне многое запомнилось. Напишу про основное: про новости MySQL 8.0. Кстати, знаете почему 8.0? Во-первых, когда-то давно уже готовилась версия 6.0, но примерно в то же время Oracle покупал Sun, в компании имели место организационные неурядицы, и эту ветку постигла примерно та же участь, что и PHP 6.0 – она померла под тяжестью организационных проблем. Поэтому выпускали 5.6 и 5.7, но теперь хочется большего: пора менять мажорную версию. Семёрка была занята MySQL Cluster, поэтому решили сделать восьмёрку.

Что нового в MySQL 8.0

Не могу сказать, что 8.0 тянет на революционный релиз. Самые важные новости для разработчиков мобильных приложений:

– во-первых, кодировка utf8mb4 станет кодировкой по умолчанию (а это значит, что MySQL начинает из коробки поддерживать emoji!);
– во-вторых, улучшена работа с географическими GIS-индексами.

Много переделали во внутренностях:

– сделали new data dictionary (выпилили MyISAM, это первый шаг к поддержке транзакций для DDL-операций);
– запилили invisible indexes (это нужно в эксплуатации, например, перед дропом: проверить, что индекс и правда никому не нужен, «выключить» его перед полным физическим удалением);
– сделали role-based management (круто, конечно, но у Oracle это есть уже лет двадцать).

В общем, приводят в порядок многие «родовые» проблемы MySQL, но для программиста – ничего революционного. Однако планы крутые, об этом – ниже.

Дальнейшие планы MySQL: InnoDB MySQL Cluster!

В рамках конференции был сделан анонс MySQL InnoDB Cluster. Возможно, его анонсировали и раньше, но я услышал об этом впервые. Это очень интересная тема для технарей, MySQL пытается «догнать рынок», и полноценный кластер для InnoDB – очень большой шаг вперёд. Посмотрите пятиминутное видео, чтобы понять, о чём это.

Если MySQL это сделает, это заметно упростит жизнь DBA, которые хотят получить персистентный кластер из коробки. Именно эта фича часто является ключевой, когда инженеры выбирают СУБД на проект из нескольких серверов: никто не хочет самостоятельно писать управление кластером. Этот проект – долгосрочный, roadmap там на несколько лет, и, к сожалению, для совсем больших проектов эта модель кластеризации далеко не всегда подходит, поскольку приводит к утроению числа серверов. А может, и, к счастью: хватит работы на наш век. ;)

Прочая активность на конференции

Обзор конференций, на которых мы побывали в 2016 году - 24

Поскольку Percona проводит много конференций, организация была на хорошем уровне, даже мобильное приложение сделали со всеми докладами. Выставочная зона была не очень большой, я почти всё время провёл рядом со стендом Tarantool. Там я поинтересовался про использование Tarantool disk store в production у Mail.Ru Group, встретил несколько знакомых из других компаний. Из больших партнёрских мероприятий посетил только поездку на корабликах в офис Booking.com.

Как вы, возможно, знаете, в Амстердаме полно каналов, их общая длина составляет сотни километров, и они образуют концентрические кольца по всему городу.

Обзор конференций, на которых мы побывали в 2016 году - 25

И вот в один из вечеров мы поплыли на корабликах в офис Booking.com прямо из отеля, в котором проходила конференция. Там было несколько шутливых докладов и потом – жуткая очередь за едой, так что мы довольно быстро сбежали гулять по вечернему Амстердаму.

Обзор конференций, на которых мы побывали в 2016 году - 26

7. ZendCon, Лас-Вегас, США, 18–21 октября

Обзор конференций, на которых мы побывали в 2016 году - 27

Фото Lukasz Szymanski

ZendCon – международная конференция для PHP-разработчиков, проходящая в Лас-Вегасе. Включает в себя два с половиной дня докладов и один день мастер-классов. Всё это проходит в восемь–девять параллельных потоков. Помимо этого, есть, конечно, стенды, обеды и afterparty (без неё – никуда).

Миша Курмаев, глава разработки A-Team

Обзор конференций, на которых мы побывали в 2016 году - 28

Я думаю, эта конференция будет интересна тем, кто хочет проникнуться духом PHP-разработки в Америке, посмотреть на то, как это работает не в российском пространстве. Я обратил внимание на много интересных докладов, но не все они технические, скорее – околопрограммистские (стоит быть готовым к этому, когда планируешь посетить ZendCon).

Большая разница с российскими конференциями: в России больше говорят про технические вещи, а на ZendCon много говорили о том, как построить свою работу (сколько писем написать, как вести встречу). Это любопытно: с какими проблемами люди сталкиваются на работе и как решают эти проблемы.

Обзор конференций, на которых мы побывали в 2016 году - 29

Миша Курмаев и Данил Мухаметзянов защищают свой проект на мастер-классе, ZendCon

Организация на хорошем уровне: в раздатке есть расписание с картой, а если вдруг потеряешь её, то расписание всегда есть перед залами. Из докладов мне больше всего запомнились эти три:

– Asynchronous programming in PHP (Adam Englander). Это единственный технический доклад, на котором я был. Речь шла о том, как программировать асинхронные вещи с примерами кода.

Extremely defensive PHP programming (Marco Pivetta). Очень понравился спикер: он рассказывал про очевидные вещи, но основной посыл был такой: все идиоты, а я – тем более. О том, как делать так, чтобы ничего не ломалось, как минимизировать риски. Он привёл хороший пример со стандартом USB: вставили одной стороной, поняли, что не так, перевернули, вставили другой стороной. Очень неудобно. Код нужно писать так, чтобы такой проблемы не возникало и «провод» можно было вставить с первого раза.

Debugging your web application on IBM i from A to Z (Apache to Zend) (Stephanie Rabbani). Спикер рассказывал про инструмент поиска ошибок (Z-Ray): как правильно настроить, показывал примеры. Выступление было полурекламным, но мне показалось интересным, потому что можно посмотреть Z-Ray.

Интересное наблюдение. Все доклады на конференции начинались примерно так: «Привет, меня зовут так-то, у меня трое детей, есть собака, я хожу в церковь и играю в баскетбол».

На мастер-класс мы попали неудачно: пришли, потому что название показалось очень интересным – Demystification OOP. Спикер была очень открытой, познакомилась со слушателями, а потом… начала рассказывать, как писать на PHP. Уйти было неудобно, поэтому мы остались. Спустя какое-то время нас разделили на группы, причём постарались разделить так, чтобы команды состояли из незнакомых друг с другом людей. Задание было простым: написать код и защитить его (рассказать, что он делает). Каждая группа выходила «на сцену» и защищала свой проект. Это было на уровне начальных курсов программирования на PHP.

Несмотря на то, что мастер-класс был довольно простым для нас, спикер была подготовленной, рассказывала очень хорошо. Полезно было тем, кто только учится программировать на PHP.

Паша Мурзаков, старший PHP-разработчик, lu4e3ar

Обзор конференций, на которых мы побывали в 2016 году - 30

Организация конференции была на очень высоком уровне, никаких накладок я не заметил. Чего не могу сказать о докладах: большинство из них либо были ориентированы на начальный уровень знаний/ опыта, либо носили откровенно рекламный характер. К счастью, благодаря огромному количеству потоков почти всегда удавалось найти что-то интересное.

Обзор конференций, на которых мы побывали в 2016 году - 31

Расскажу о том, что запомнилось мне. По моему мнению, эти доклады будут полезны уже не новичкам в PHP, а, скорее, программистам среднего уровня.

Extremely defensive PHP programming (Marco Pivetta). Автор – один из мейнтейнеров Doctrine 2 и Zend Framework 2. Марко рассказал, что термин defensive PHP programming был придуман по аналогии с defensive driving (техника вождения, которая позволяет избежать плохих последствий, предполагая, что другие участники движения допустят ошибки). Также автор упоминает принцип Poka-yoke, который на русский часто переводится как «защита от дурака»: сделать так, чтобы неправильное использование чего-либо не приводило к плохим последствиям.

В докладе предлагается:

– максимально ограничивать область видимости и варианты использования (private – для методов/ свойств класса по умолчанию, final – для самих классов);
– все состояния, переданные извне, должны быть инкапсулированы – сохранены в приватные свойства. Если это объект, он должен быть клонирован, чтобы запретить его возможность изменения снаружи (например, DateTime vs DateTimeImmutable);
– избегать переключающих логику функции параметров;
– никаких зависимостей через сеттеры, только через конструктор. Для опциональных зависимостей – заглушки;
– весь публичный интерфейс должен быть «транзакционным» (например, не должно быть двух методов: вычесть деньги с одного счёта и добавить деньги на другой счёт, вместо этого должен быть один метод перевода денег);
– избегать mixed переменных. Вместо этого можно использовать value object, внутри которых можно инкапсулировать различные варианты;
– трейты? Просто нет.

И ещё множество принципов, которые знакомы, наверное, каждому, но структурировано освежить их в памяти никогда не мешает.

PHP internal architecture (Elizabeth Smith). В своём докладе Элизабет рассказала про различные аспекты внутреннего устройства PHP. Они сравниваются с тем, как это сделано в других популярных языках: Ruby, Python, и т. д. В качестве вывода этого сравнения: одно из самых больших отличий PHP от остальных – наличие SAPI в том виде, в котором он есть в PHP.

Элизабет рассказала об истории развития различных SAPI, а также о том, что эта архитектура привела в том числе к появлению php-fpm, первая версия которого была написана у нас в Badoo. Еще Элизабет рассказала про лексер/ парсер и tokens_get_all, про AST/ опкоды и VLD, который позволяет просмотреть полученные опкоды.

Во второй половине доклада детальнее рассказывается об экстеншенах. Большинство из нас знают, что их можно разделить на две группы: Zend Extensions и PHP Modules. Любой из них можно проклассифицировать по мейнтейнерам, степени встроенности и отключаемости на следующие категории:

– Core Built-in – официально неотключаемые;
– Core Default – включённые по умолчанию, но отключаемые;
– Core – идут в поставке с PHP, но не включены по умолчанию;
– PECL – не идут в поставке с PHP, но можно загрузить при помощи PECL;
– 3rd party.

В случае если вы пишете какой-то экстеншен, лучше, если в итоге он попадёт хотя бы в PECL, это будет плюсом к его популярности, поддержке и простоте использования.

Но когда же нужно писать экстеншены? Наиболее типичных случаев два:

– необходимо увеличить производительность кода;
– нужен биндинг к сторонней библиотеке, написанной на другом языке.

Для первого случая в докладе не рекомендуется сразу же писать экстеншен, потому что:

– чаще всего PHP не является узким местом;
– экстеншены писать сложнее, чем код на PHP, вероятность допустить ошибки выше.

Для второго случая есть FFI, который помогает обойтись без экстеншенов. Но с переходом на PHP 7 он был сломан и сейчас существует проект MFFI.

My journey to the center of PHP (Sammy Kaye Powers). Этот доклад – логическое продолжение предыдущего, – он про success-story одного человека, который решил добавить простой способ генерации случайных криптографически стойких чисел (CSPRNG) в PHP. Доклад в первую очередь интересен тем, что спикер рассказал о том, как он почти с нуля разобрался с написанием экстеншенов на PHP и сейчас его функции находятся в ядре PHP 7:
1 и 2.

Также в докладе был затронут механизм внесения правок в PHP – мейл-листы, RFC, голосование, документация. И успешный результат в самом конце – правка принята 41 голосом единогласно.

Слайды весёлые и говорящие сами за себя: рекомендую к просмотру.

Обзор конференций, на которых мы побывали в 2016 году - 32

Фото Renato Mefi

Для тех, кто планирует посетить ZendCon в следующем году, поделюсь наблюдением: расположение залов в Hard Rock Hotel & Casino довольно запутанное: лучше предварительно изучить карту и выходить немного раньше, чтобы не опоздать на доклад.

8. HighLoad++, Москва, Россия 7–8 ноября

Обзор конференций, на которых мы побывали в 2016 году - 33

Это профессиональная конференция разработчиков высоконагруженных систем, проводимая для обмена знаниями о технологиях. Мы не упускаем возможность выступить на HighLoad++, и 2016 год не стал исключением: от нас было четыре спикера. В этом году Highload++ отметила своё десятилетие.

Обзор конференций, на которых мы побывали в 2016 году - 34

Артём Денисов выступает с докладом от Badoo

Валентина Ермолова, младший PHP-программист, walsk

Обзор конференций, на которых мы побывали в 2016 году - 35

Я очень довольна организацией: лучшая из всех конференций, на которых я была. Я бы порекомендовала HighLoad++ любопытным людям, которые любят открывать для себя новые области. Например, в этом году была возможность послушать выступления про нейросети. Я в этом полный чайник, но область мне интересна. Доклады были обзорные и простые. Пожалуй, эта возможность была самой приятной неожиданностью на конференции.

Практически всё время я слушала выступления и не побывала на выставке. Больше всего мне запомнились три доклада.

Олег Бартунов рассказал про индекс RUM в PostgreSQL. Доклад был посвящён полнотекстовому поиску и построен в формате «мы запилили full text search в PostgreSQL, так что выбрасывайте свой сфинкс». Олег очень подробно и аргументировано расписал, почему хорошо делать поиск прямо из базы. Интересно, что они запилили новый индекс, и Олег объяснил принцип его работы и рассказал, как им пришлось повозиться, чтобы этот индекс доставить конечным юзерам (а именно – прокинуть в ядро механизм, который позволяет всем юзерам создавать свои access methods, а потом выложить на GitHub код для работы с этим индексом), и всякие тонкости его использования.

Выступление про архитектуру нейросетей Григория Сапунова. Здесь был очень подробный рассказ о том, какие бывают базовые элементы нейросетей и какие сложные схемы из них строят. Вообще-то доклад довольно простой, но было очень интересно как раз из-за незнания вопроса.

Дмитрий Стогов и оптимизации в PHP 7. В нашем блоге на Хабре некоторое время назад был пост «Как Badoo сэкономил 1М, перейдя на PHP 7», но у меня всё не доходили руки посмотреть, а что же именно там поменяли. А Дмитрий подробно и понятно рассказал, что и как.

На этом, пожалуй, остановимся. В комментариях расскажите о конференциях, на которых побывали вы в 2016 году, вдруг мы пропустили какие-нибудь очень интересные мероприятия, но внесём их в наш календарь на 2017 год.

Автор: Badoo

Источник

Поделиться новостью

* - обязательные к заполнению поля