User
Как мы сделали PHP 7 в два раза быстрее PHP 5. Часть 1: оптимизация структур данных
Дмитрий Стогов из Zend Technologies на HighLoad++ рассказал, благодаря чему повысилась производительность. В расшифровке: о внутреннем устройстве PHP, об идеях в основе версии 7.0, об изменениях в базовых структурах данных и алгоритмах, которые и определили успех.
Disclaimer: На март 2019 года 80% сайтов работают на PHP, и 70% из них — на PHP 5, хотя с 1 января 2019 эта версия не поддерживается. Доклад Дмитрия от 2016 года про принципы, благодаря которым произошел двукратный скачок производительности между PHP 5 и 7, — актуален и в марте 2019. Для половины сайтов — точно.
How Kiwi test 1'000 Python projects
This is how Alex Viscreanu’s talk on Moscow Python Conf++ named. Now it's two weeks till before the conference, but of course, I've already heard what Alex will speak about. Find below some spoilers and talk preparing backstage: what kind of an open source Zoo developed in Kiwi, how it tests Python code and what’s the difference between The Zoo and for example mypy.
— Tell us a bit about Kiwi, yourself and what is your work within a company?
Kiwi.com is an online travel agency based in Czech Republic. We aim to make travelling as simple and accessible as possible. The company was founded in 2012 as Skypicker, and since then it has become one of the five biggest online sellers of airline tickets in Europe. It was renamed to Kiwi.com in 2016.
The special feature that we, at Kiwi.com, offer is the virtual interlining, which allows us to connect flights from companies that don’t usually cooperate together, and we are covering the possible connection issues caused by delayed flights.
Some of the numbers that we manage at Kiwi.com include 90 000 000+ daily searches, 25 000 seats sold daily, and a total of 15 000 000 000+ flight combinations available.
Как в Kiwi.com тестируют 1000 проектов на Python
Это название доклада Alex Viscreanu на Moscow Python Conf ++. До выступления еще две недели, но я, конечно, уже обо всем расспросил Алекса и под катом поделюсь спойлерами и бэкстейджем подготовки доклада: что это за опенсорсный Зоопарк такой, что он делает с нашим Python кодом и чем отличается от mypy сотоварищи.
— Расскажи немного о Kiwi, чем ты занимаешься в компании?
Kiwi.com — онлайн турагентство с секретным соусом. Компания основана в Чехии в 2012 под названием Skypicker, а в 2016 сервис сменил название и переехал на Kiwi.com. Сейчас Kiwi.com в пятерке крупнейших агрегаторов авиабилетов в Европе.
Классная фича Kiwi.com для пользователей в том, что мы находим варианты стыковок для рейсов авиакомпаний, которые обычно не работают вместе, и берем на себя решение всевозможных проблем при стыковке.
Чтобы вы оценили наши масштабы, вот цифры о Kiwi.com: 90 000 000+ ежедневных поисков, 25 000 ежедневно продаваемых мест и более 15 000 000 000 доступных комбинаций рейсов.
История успеха nginx, или «Возможно всё, пробуй!»

Игорь Сысоев, разработчик веб-сервера nginx, член большой семьи HighLoad++, не просто стоял у истоков нашей конференции. Я воспринимаю Игоря как своего профессионального учителя, мастера, который научил меня работать и понимать высоконагруженные системы, что на десятилетие определило мой профессиональный путь.
Естественно, я не мог пройти мимо оглушительного успеха команды NGINX… И взял интервью, но не у Игоря (он по-прежнему интроверт-программист), а у инвесторов из фонда Runa Capital, которые десять лет назад разглядели nginx, построили вокруг него бизнес-инфраструктуру, а сейчас вели сделку, беспрецедентную по размеру для российского рынка.
Цель статьи под катом — ещё раз подтвердить — возможно все! Пробуй!
Монолит для сотен версий клиентов: как мы пишем и поддерживаем тесты

Всем привет!
Я бэкенд-разработчик в серверной команде Badoo. На прошлогодней конференции HighLoad я выступал с докладом, текстовым вариантом которого и хочу поделиться с вами. Этот пост будет наиболее полезен тем, кто самостоятельно пишет тесты для бэкенда и испытывает проблемы с тестированием legacy-кода, а также тем, кто хочет тестировать сложную бизнес-логику.
О чём пойдёт речь? Сначала я коротко расскажу о нашем процессе разработки и о том, как он влияет на нашу потребность в тестах и желание эти тесты писать. Затем мы пройдёмся снизу вверх по пирамиде автоматизации тестирования, обсудим используемые нами виды тестов, поговорим об инструментах внутри каждого из них и о том, какие проблемы мы решаем с их помощью. В конце рассмотрим, как поддерживать и запускать всё это добро.
Гибкая схема хранения данных в MySQL (JSON)

Предыстория
Началось все с простого желания посадить фруктовое дерево на своем участке. Сделать это, казалось бы, очень просто — приходишь в магазин и покупаешь саженец. Но в Америке первый вопрос, который задают продавцы, это сколько дерево получит солнечного света. Для Александра это оказалось гигантской загадкой — совершенно неизвестно, сколько солнечного света на участке.
Чтобы это узнать, школьник мог бы каждый день выходить во двор, смотреть, сколько солнечного света, и записывать это в блокнотик. Но это не дело — надо все оснастить оборудованием и автоматизировать.
«Latency numbers» на iPhone

Ссылка на источник схемы
Но какая польза мобильным разработчикам от этой информации в 2019? Кажется, что никакой, но Дмитрий Куркин (SClown) из команды Яндекс.Навигатора задумался: «А как бы таблица выглядела для современного iPhone?». Что из этого получилось, в переработанной текстовой версии доклада Дмитрия на AppsConf.
Для чего это нужно?
Почему же программисты должны знать эти числа? И актуальны ли они для мобильных разработчиков? Можно выделить две основные задачи, которые можно решать при помощи этих чисел.
S for Security: безопасность в Интернете Вещей и доклады на InoThings++ 2019
— Ну хоть что-то у нас в безопасности...
Привет, Хабр!
В комментариях к предыдущему посту про InoThings++ высказали мнение, что в Интернете Вещей есть более важная для обсуждения область, нежели вмешательство государства — это область обеспечения безопасности устройств. Со всех точек зрения.
Поспорить я могу здесь лишь с одним — что обсуждение вопросов безопасности стоит проводить в формате круглого стола; по этой причине круглый стол оставим как есть, на тему нужности (или ненужности) национальных стандартов и вообще вмешательства государства в дела индустрии, а про безопасность поговорим отдельно.
Почему вообще обеспечение безопасности в IoT рассматривают как что-то отдельное и специфическое, непохожее на обеспечение безопасности в классических ИТ-системах?
Да в общем потому, что IoT-системы на классические похожи лишь со стороны пользователя, видящего на экране монитора красивые картинки или управляющего лампочкой со смартфона — а вот внутри, на низком уровне, они совсем, совсем другие.
И, к сожалению, мы ещё многократно хлебнём горя с авторами продуктов, не понимающими разницы в подходе и проблемах.
Разгоняем обработку событий до 1,6 миллионов в секунду
3 года назад Александр рассказывал, как в Badoo построили масштабируемую систему near-realtime обработки событий. С тех пор она эволюционировала, в процессе росли объёмы, приходилось решать задачи масштабирования и отказоустойчивости, а в определённый момент потребовались радикальные меры — смена технологического стека.

Из расшифровки вы узнаете, как в Badoo заменили связку Spark + Hadoop на ClickHouse, в 3 раза сэкономили железо и увеличили нагрузку в 6 раз, зачем и какими средствами собирать статистику в проекте, и что с этими данными потом делать.
О спикере: Александр Крашенинников (alexkrash) — Head of Data Engineering в Badoo. Занимается BI-инфраструктурой, масштабированием под нагрузки, руководит командами, которые строят инфраструктуру обработки данных. Обожает всё распределённое: Hadoop, Spark, ClickHouse. Уверен, что классные распределенные системы можно готовить из OpenSource.
Первый публичный круглый стол «Нужны ли нам национальные стандарты в Интернете вещей?» — на конференции InoThings++
За последний год тема национальных стандартов, различных указаний госрегуляторов и прочих связанных вещей стала одной из самых обсуждаемых в российской IoT-сообществе — что, впрочем, совершенно неудивительно, достаточно посмотреть на краткий список свежих событий:
- принятие предварительного национального стандарта на протокол NB-Fi компании «Вавиот»
- рекомендация Минцифры (оно же Минсвязи) при дистанционном съёме показаний приборов учёта электроэнергии пользоваться только и исключительно протоколом XNB компании «Стриж»
- невнятные решения ГКРЧ, провозглашающие что-то непонятное об использовании базовых станций российского производства в LPWAN-сетях
- напоминание РКН и ГКРЧ о порядке регистрации этих базовых станций и самих сетей
- долгожданное и одновременно неожиданное расширение безлицензионных диапазопов
Все эти события довольно бурно обсуждались между непосредственно причастными к рынку людьми, но наружу выплёскивались лишь отдельные сжатые скептические комментарии профессионалов IoT-рынка и безудержно оптимистичные рассказы чиновников и иных людей, всегда готовых к импортозамещению в формате «пятилетка за три года».
Даже призванное быть публичным обсуждение проекта стандарта NB-Fi в Техническом комитете 194 Росстандарта по факту от публики оказалось полностью закрытым.
Мы бы хотели исправить это положение.

Итак, на InoThings++ 2019 (Москва, 4 апреля) пройдёт первое настоящее публичное обсуждение темы национальных стандартов, госрегулирования и господдержки в области Интернета вещей, в котором мы постараемся и представить все возможные точки зрения со стороны докладчиков, и дать возможность слушателям задать свои вопросы.
.NET Reference Types vs Value Types. Part 2
The Object base type and implementation of interfaces. Boxing
It seems we came through hell and high water and can nail any interview, even the one for .NET CLR team. However, let's not rush to microsoft.com and search for vacancies. Now, we need to understand how value types inherit an object if they contain neither a reference to SyncBlockIndex, not a pointer to a virtual methods table. This will completely explain our system of types and all pieces of a puzzle will find their places. However, we will need more than one sentence.
Now, let's remember again how value types are allocated in memory. They get the place in memory right where they are. Reference types get allocation on the heap of small and large objects. They always give a reference to the place on the heap where the object is. Each value type has such methods as ToString, Equals and GetHashCode. They are virtual and overridable, but don’t allow to inherit a value type by overriding methods. If value types used overridable methods, they would need a virtual methods table to route calls. This would lead to the problems of passing structures to unmanaged world: extra fields would go there. As a result, there are descriptions of value type methods somewhere, but you cannot access them directly via a virtual methods table.
This may bring the idea that the lack of inheritance is artificial
This chapter was translated from Russian jointly by author and by professional translators. You can help us with translation from Russian or English into any other language, primarily into Chinese or German.
Also, if you want thank us, the best way you can do that is to give us a star on github or to fork repositorygithub/sidristij/dotnetbook.
Разрабатывать под мобилки увлекательнее, чем для веба?
Программный комитет у нас большой, потому что нужна целая команда экспертов по iOS и Android, и потому что больше суммарного бэкграунда и разных точек зрения — лучше, меньше субъективного хайпа и тем, широко известных только в очень узких кругах. Я уже рассказывал про то, как мы работаем с заявками, и знакомил вас с некоторыми членами ПК. Сегодня представлю вам еще четверых. Место работы, должность и базворды ключевых интересов, говорят только то, что они все разработчики с приличным опытом, а вот короткое несерьезное (на само деле с важными вопросами) интервью, мне кажется, лучше подскажет, какую конференцию сделают эти люди.

Итак, вопросы для всех одинаковые: iOS vs Android, мобилки vs веб; инстурменты мобильного разработчика; мысленные эксперименты путешествия во времени; технологические лидеры и источники новостей в индустрии. А ответы разные, кроме того, что совсем никто не хотел бы вернуться в прошлое и отговорить себя от мобильной разработки — но это нам же лучше.
Спойлер: самый популярный инструмент, без которого не обойтись мобильному разработчику — терпение.
А за остальным — прошу под кат.
Качество кода

Каждый разработчик понимает качество по-своему, исходя из опыта. Представления джунов и лидов различаются, и это приводит к разногласиям. Каждая команда для отдельных проектов оценивает код по-своему. Команда обновляется, разработчики уходят, тимлиды сменяются — определение качества меняется. Эту проблему попробует помочь решить Иван Ботанов (StressoID) из Tinkoff.ru — Frontend-developer, преподаватель онлайн-курса по Angular, спикер на митапах и конференциях, ведущий уроков на YouTube и, иногда, тренер команд в компаниях.
В расшифровке доклада Ивана на Frontend Conf поговорим о читаемости, нейминге, декларативности, Code style, и косвенно коснемся отношений джунов и лидов: ошибки, грабли и «сгорание» тимлидов.
Disclaimer: Подготовьтесь морально, в тексте будет много плохого кода, взятого с «особенного» сайта.
Почти надежные решения

Под катом обсудим методы компенсирования ненадежности оборудования, каналов связи и персонала с помощью ПО; проблемы отказоустойчивости и их решения; человеческий фактор; изоленту и носки как универсальное средство починки космических кораблей и передачу данных грузовиками.
О спикере: Станислав Елизаров занимается отделом сетевой инфраструктуры в компании «СТРИЖ», которая производит счетчики, датчики, базовые LTE-станции, а также собирает показания там, где любые другие системы связи просто не работают.
Как нейронные сети графике помогали
Евгений Туманов работает Deep Learning инженером в компании NVIDIA. По итогам его выступления на конференции HighLoad++ мы подготовили рассказ о применении Machine Learning и Deep Learning в графике. Машинное обучение не заканчивается на NLP, Computer Vision, рекомендательных системах и задачах поиска. Даже если вы не очень знакомы с этим направлением, то сможете применить наработки из статьи в своей области или индустрии.
Рассказ будет состоять из состоит из трех частей. Мы сделаем обзор задач в графике, которые решаются с помощью машинного обучения, выведем главную идею, и опишем кейс применения этой идеи в определенной задаче, а конкретно — в рендеринге облаков.
16 марта Вadoo PHP Meetup: тесты и качество кода. Регистрация открыта

UPD. Добавили еще мест! Будет тесновато, но переживем.
Всем привет!
Меня зовут Владимир Янц, я активно занимаюсь развитием инфраструктуры тестирования кода в Badoo. С PHP у нас давние и крепкие отношения, и мы с коллегами всячески поддерживаем сообщество.
Нас все спрашивали: “Когда же уже, когда?” — и вот оно.
16 марта приглашаем на весенний Badoo PHP Meetup!
Вторую встречу мы решили посвятить автотестам для PHP-разработчика. Тема будет интересна всем PHP-кам, которые самостоятельно тестируют свой код, и хотят максимально улучшить его качество. Опытным автотестировщикам тоже должно быть полезно, так что welcome!
Обещаем только реальные кейсы из практики (как пишут автотесты), дискуссию о важном (о качестве кода, естественно) и живое обсуждение каждого доклада. Времени пообщаться у нас целый день (суббота) и даже вечер — желающих захватим с собой на afterparty.
Первый доклад в 12:00. Событие бесплатное, только пожалуйста, не забудьте зарегистрироваться здесь и дождаться подтверждения.
Управление знаниями: какие документы нужны и что в них фиксировать
Под катом вместе с Максимом Цепковым будем разбираться, какие уроки можно вынести из разных подходов, как проектировать документы проекта, что занести в wiki, для чего подойдет Google Docs, а что обязательно должно все время находиться перед глазами. Да и вообще, зачем нужна это вся документация. Заодно и тему управления знаниями затронем.

Суверенный LPWAN, часть 1: лицензирование и эксплуатация LPWAN-сетей в России — старые новые требования ГКРЧ
В конце прошлого года причастные к «интернету вещей» сайты, блоги и каналы всколыхнула новость — якобы ГКРЧ приняла решение, согласно которому базовые станции любых IoT-сетей LPWAN должны быть только российского производства, а при установке их в обязательном порядке необходимо регистрировать.

Базовая станция LoRaWAN российского производства
Хотя для самой популярной из открытых технологий — LoRaWAN — российские БС вполне себе существуют, это, например, новосбириская Вега БС-2, новость вызвала у многих серьёзное волнение. Во-первых, одной Вегой сыт не будешь, Kerlink, Multitech и даже Sagemcom тоже иногда хочется. Во-вторых, ну хорошо, сегодня все строят LoRaWAN, а завтра? Такое решение попросту закрыло бы путь на российский рынок для новых стандартов — зарубежное оборудование эксплуатировать нельзя, а в разработку аналогичного российского вкладываться никто не будет, пока не станет хоть как-то понятна окупаемость и перспективы.
Впрочем, на самом деле, как обычно с российским законодательством, совы — не те, кем они кажутся.
Давайте разбираться.