Привет! Меня зовут Александр, и я – фронтенд-разработчик в компании Badoo. Пожалуй, одной из самых обсуждаемых тем в мире фронтенда в последние несколько лет является протокол HTTP/2. И не зря – ведь переход на него открывает перед разработчиками много возможностей по ускорению и оптимизации сайтов. Этот пост посвящён как раз одной из таких возможностей – Server Push. Cтатья Джереми Вагнера показалась мне интересной, и поэтому делюсь полезной информацией с вами.
Рыбак Алексей @fisher
Пользователь
Что общего у мобильного QA и осьминога
8 мин
43KПривет! Я Катя, и я –
Итак, раннее утро, вы – мобильный QA. Вы приходите на работу, завариваете крепкий кофе и хотите взять пару мобильных устройств для тестирования новой фичи, осознавая, какие муки выбора вам предстоят. Что это будут за устройства?
Рано или поздно каждый мобильный тестировщик задаётся вопросом, на каком количестве устройств тестировать новый функционал, чтобы поймать максимальное количество девайсозависимых багов, потратив минимум времени. Автотесты ещё не написаны, перед вами абсолютно новые фичи. И если с iOS есть хоть какая-то ясность, и список устройств ограничен, то Android «расплодился» в полнейший ад. Вы удивитесь, но для счастья нужно всего три–четыре Android-устройства. Я хочу рассказать, как с точки зрения опытного тестировщика их выбрать.
+71
Спроси backend-разработчиков Badoo. Часть 1. Платформа
11 мин
22KНам очень нравится формат AMA (ask me anything) на Reddit, когда кто-нибудь (в нашем случае – команда разработчиков) приходит в сабреддит AMA и говорит, что готов отвечать на заданные вопросы. Из самых запоминающихся сессий Ask Me Anything, например, команда инженеров Space X, или инженеры из Google, и даже действующий президент США Барак Обама четыре года назад отвечал на вопросы на Реддите. Недавно наша Android-команда проводила AMA и в онлайн-режиме отвечала на вопросы разработчиков.
Но в России нет своего Реддита. Зато есть свой Хабр. Поэтому мы решили прийти с форматом «задай нам вопрос» сюда. И не с пустыми руками, как велят правила AMA. Чтобы вам было проще понять тему, мы выбрали одну из наших команд – «Платформу» – и попросили ребят рассказать, чем они занимаются, на чём программируют и чего добились за время существования команды. И подвели небольшие итоги уходящего 2016 года. Поехали!
Оглавление
1. Чем занимается «Платформа»
2. Сервисы: Pinba, SoftMocks и другие
3. Системное программирование. Как мы начали использовать Go и к чему это привело
4. Фотографии
5. Скриптовое облако
6. LSD: Live Streaming Daemon
7. Cassandra Time Series: что это и как работает
8. Badoo AMA: задай вопрос разработчикам «Платформы»
Пруф, что это действительно мы.
+80
Как работают ИТ-специалисты. Алексей Рыбак, глава разработки Badoo
10 мин
15K7 и 8 ноября в Сколково прошла конференция HighLoad++ 2016. Более 200 экспертов выступали с докладами о высоконагруженных сервисах, проблемах работы с ними, администрировании и многом другом.
На месте мы смогли пообщаться с разными экспертами. Большинство из них пишет код, либо писали его в прошлом. Они рассказали нам о своем режиме труда и отдыха, профессиональных привычках, об инструментарии, который они используют, и многом другом.
С каждым мы провели интервью в формате блиц-опроса. Будет интересно выяснить, что объединяет этих IT-специалистов, в чем они похожи. Возможно, их ответы помогут выявить какие-то общие закономерности, полезные советы, которые помогут многим из нас.
+29
Badoo перешли на PHP7 и сэкономили $1M
16 мин
104KМы сделали это! Несколько сотен наших application-серверов переведены на PHP7 и прекрасно себя чувствуют. Насколько нам известно, это второй переход на PHP7 проекта такого масштаба (после Etsy). В процессе мы нашли несколько очень неприятных багов в системе кеширования байт-кода PHP7, но они исправлены. А теперь — ура! — благая весть для всего PHP-сообщества: PHP7 действительно готов к продакшену, стабилен, потребляет значительно меньше памяти и дает очень хороший прирост производительности. Ниже мы подробно расскажем, как мы перешли на PHP7, с какими трудностями столкнулись, как с ними боролись и какие результаты получили.
+149
Как устроено сплит-тестирование в Badoo
18 мин
26KЕсли в Google ввести запрос «a b тестирование», то по теме выпадает довольно много статей, но в них больше теории и ориентированы они на менеджеров, а в качестве инструментов предлагаются готовые клиентские реализации, вроде Google Analytics. Также есть статья про очень простую серверную реализацию (в реалиях авторов, я думаю, этого вполне достаточно).
Сегодня я расскажу о том, как это происходит у нас, в Badoo, при огромном количестве пользователей по всему миру.
У нас был целый «зоопарк» инструментов для сплит-тестирования во главе с A/B фрэймворком, часть из которых разрабатывалась для других целей. Помимо прочих недостатков, все эти инструменты использовали примерно один и тот же способ для разделения пользователей на варианты — это хеширование ID пользователя плюс «соль». Такой подход нас не удовлетворял, и было принято решение разработать новую версию, в которой можно было бы избежать недостатков старых версий.
Сегодня я расскажу о том, как это происходит у нас, в Badoo, при огромном количестве пользователей по всему миру.
У нас был целый «зоопарк» инструментов для сплит-тестирования во главе с A/B фрэймворком, часть из которых разрабатывалась для других целей. Помимо прочих недостатков, все эти инструменты использовали примерно один и тот же способ для разделения пользователей на варианты — это хеширование ID пользователя плюс «соль». Такой подход нас не удовлетворял, и было принято решение разработать новую версию, в которой можно было бы избежать недостатков старых версий.
+27
Добавление оператора диапазона в PHP
14 мин
17KПеревод
На картинке — Ancient Psychic Tandem War Elephant © Adventure Time
В этой статье будет рассмотрен процесс внедрения в PHP нового оператора. Для этого будут выполнены следующие шаги:
- Обновление лексического анализатора: он будет знать о синтаксисе нового оператора, что позволит потом превратить его в токен.
- Обновление парсера: система будет знать, где может использоваться этот оператор, а заодно какова его приоритетность и ассоциативность.
- Обновление этапа компиляции: здесь происходит обработка (traverse) дерева абстрактного синтаксиса (AST) и извлечение из него кодов операции.
- Обновление виртуальной машины Zend: во время выполнения скрипта она используется для обработки интерпретации нового кода операции для оператора.
В общем, в этой статье будут кратко рассмотрены несколько внутренних моментов PHP. Выражаю горячую благодарность Никите Попову за помощь в доработке этой статьи.
+36
Тестирование мобильных приложений: tips & tricks
12 мин
129KНаша новая статья представляет собой список рекомендаций и советов. Из неё вы узнаете:
Начинающим тестировщикам советы могут помочь расти быстрее, а более опытным — упорядочить знания. Статья также будет полезна разработчикам, продакт-менеджерам и менеджерам проектов, словом — всем, кто хочет улучшить качество продукта и наладить взаимодействие между отделами.
1. Используйте принципы эвристики и мнемоники — они помогают удержать в голове все аспекты, которые нужно учесть при тестировании фичи или приложения.
2. Скриншоты, логи и видео — лучшие аргументы тестировщика!
К сожалению, с логами «общения» с сервером зачастую не всё так гладко, как с клиентскими логами. Обычно они добавляются скорее для удобства разработчика при отладке работы с сервером, чем для работы тестировщика.
- как облегчить процесс тестирования мобильных приложений в целом;
- о специфике работы с сетью, внутренними и внешними сервисами, платформах iOS и Android;
- какие процессные решения и изменения позволят вам развиваться быстрее и вводить культуру тестирования в отделе разработки;
- какие существуют полезные инструменты и решения для тестирования, отладки, мониторинга и миграции пользователей.
Начинающим тестировщикам советы могут помочь расти быстрее, а более опытным — упорядочить знания. Статья также будет полезна разработчикам, продакт-менеджерам и менеджерам проектов, словом — всем, кто хочет улучшить качество продукта и наладить взаимодействие между отделами.
Как облегчить процесс тестирования?
1. Используйте принципы эвристики и мнемоники — они помогают удержать в голове все аспекты, которые нужно учесть при тестировании фичи или приложения.
- Набор интеллект-карт на все случаи жизни: test insane, ministry of testing
- Эвристики, мнемоники: I SLICED UP FUN (моя любимая), COP FLUNG GUN, SFDPOT, LONG FUN CUP
2. Скриншоты, логи и видео — лучшие аргументы тестировщика!
К сожалению, с логами «общения» с сервером зачастую не всё так гладко, как с клиентскими логами. Обычно они добавляются скорее для удобства разработчика при отладке работы с сервером, чем для работы тестировщика.
+27
Видео докладов с конференции «Российские интернет-технологии 2015»
1 мин
6.2KРады поделиться с вами видео докладов с конференции «РИТ++». Отдельным постом выложим видео и слайды с LoveQA митапа.
1.«Реалтайм статистика скорости работы нативных и веб-приложений у реальных пользователей», Павел dpp Довбуш (Badoo).
Рассказали как сделана статистика и аналитика скорости работы (UX) приложений Badoo (Web, Mobile-web, iOS, Android, Windows). Про общие концепции и примеры, что и как измерять. Про то, как собирать данные со 100% пользователей проекта и выдержать нагрузку.
А также о том, как из OpenSource решений собрать систему сбора и визуализации статистики для своего проекта.
Бонус: выложили наше «real user monitoring» решение Jinba в OpenSource.
1.«Реалтайм статистика скорости работы нативных и веб-приложений у реальных пользователей», Павел dpp Довбуш (Badoo).
Рассказали как сделана статистика и аналитика скорости работы (UX) приложений Badoo (Web, Mobile-web, iOS, Android, Windows). Про общие концепции и примеры, что и как измерять. Про то, как собирать данные со 100% пользователей проекта и выдержать нагрузку.
А также о том, как из OpenSource решений собрать систему сбора и визуализации статистики для своего проекта.
Бонус: выложили наше «real user monitoring» решение Jinba в OpenSource.
+13
Обзор докладов конференции QCon London 2015
17 мин
6.1K Привет, меня зовут Макс Матюхин, я PHP-программист в компании Badoo. В прошлом месяце в Лондоне прошла очередная Международная конференция разработчиков QCon 2015. Я побывал на ней и теперь хочу поделиться с вами своими впечатлениями о мероприятии и рассказать о самых интересных, на мой взгляд, выступлениях. Из этой статьи вы узнаете чуть больше про архитектуру Uber, Spotify, CloudFlare, а также о том, как Google управляет своей инфраструктурой и многом другом.
Впервые QCon состоялась в 2007 году в Лондоне и Сан-Франциско. С тех пор она стабильно набирает популярность и расширяет географию, и в этом году она пройдет в 8 городах. Лондонская QCon проходит в самом сердце британской столицы, в двух шагах от Вестминстерского Аббатства. В разное время на QCon выступали такие известные личности, как Martin Fowler, Kent Beck, Erik Meijer, Steve Vinoski, Joe Armstrong, Rich Hickey и многие другие.
Впервые QCon состоялась в 2007 году в Лондоне и Сан-Франциско. С тех пор она стабильно набирает популярность и расширяет географию, и в этом году она пройдет в 8 городах. Лондонская QCon проходит в самом сердце британской столицы, в двух шагах от Вестминстерского Аббатства. В разное время на QCon выступали такие известные личности, как Martin Fowler, Kent Beck, Erik Meijer, Steve Vinoski, Joe Armstrong, Rich Hickey и многие другие.
+20
15 советов и хитростей инструментов разработчика Chrome, которые вы обязаны знать
5 мин
206KПеревод
Сегодня Google Chrome является самым популярным браузером среди веб разработчиков. С быстрым, шести недельным, циклом релизов и мощным набором постоянно расширяющихся инструментов разработчика, превратившим браузер в инструмент, который вы обязаны иметь. Большинство из вас, вероятно, знакомы со многими его функциями, такими как «живое» редактирование CSS, используя консоль и отладчик. В этой статье мы с вами рассмотрим 15 захватывающих советов и хитростей, которые позволят улучшить вашу производительность еще больше.
+82
Процесс разработки и тестирования демонов
7 мин
19K Сегодня мы поговорим о «низкоуровневых» кирпичиках нашего проекта — о демонах.
Хоть это и не очевидно, но практически весь функционал сайта во многом зависит от работы этих программ. Игра в “Знакомства”, поиск новых лиц, центр внимания, обмен сообщениями, статусы, геолокация и многие другие вещи завязаны на тот или иной демон. Так что можно сказать, что они помогают людям по всему миру общаться и находить новые знакомства. Одновременно на сайте могут работать и взаимодействовать между собой несколько десятков демонов. Их корректное поведение является очень важной задачей, поэтому мы решили покрывать основной функционал демонов автотестами.
В Badoo этим занимается специальный отдел. И сегодня мы расскажем о том, как у нас проходит процесс разработки этой критически важной части сайта и выполнение автотестов. Эта область достаточно специфичная и материала много, поэтому мы подготовили структурированный обзор всего процесса, чтобы разобраться в нем смогли все, кому интересно.
В качестве VCS у нас используется Git, для непрерывной интеграции — TeamCity, а в роли баг-трекера выступает JIRA. Для тестирования мы используем PHPUnit. Разработка демонов, как и остального сайта, ведется по принципу «фича ― ветка». Для того чтобы понять, что это, мы рассмотрим проекции нашего flow на Git и на JIRA.
Определение из Википедии:
«де́мон — компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем».
Хоть это и не очевидно, но практически весь функционал сайта во многом зависит от работы этих программ. Игра в “Знакомства”, поиск новых лиц, центр внимания, обмен сообщениями, статусы, геолокация и многие другие вещи завязаны на тот или иной демон. Так что можно сказать, что они помогают людям по всему миру общаться и находить новые знакомства. Одновременно на сайте могут работать и взаимодействовать между собой несколько десятков демонов. Их корректное поведение является очень важной задачей, поэтому мы решили покрывать основной функционал демонов автотестами.
В Badoo этим занимается специальный отдел. И сегодня мы расскажем о том, как у нас проходит процесс разработки этой критически важной части сайта и выполнение автотестов. Эта область достаточно специфичная и материала много, поэтому мы подготовили структурированный обзор всего процесса, чтобы разобраться в нем смогли все, кому интересно.
В качестве VCS у нас используется Git, для непрерывной интеграции — TeamCity, а в роли баг-трекера выступает JIRA. Для тестирования мы используем PHPUnit. Разработка демонов, как и остального сайта, ведется по принципу «фича ― ветка». Для того чтобы понять, что это, мы рассмотрим проекции нашего flow на Git и на JIRA.
+28
Задай вопрос эксперту и выиграй билет на Highload!
2 мин
6.1K На этой неделе в Москве пройдет одна из лучших технологических конференций HighLoad 2014.
Мы хотим дать возможность «вскочить на уходящий поезд» тем, кто очень хотел попасть на конференцию, но не успел или не смог купить билет. Badoo дарит 2 билета на конференцию за самые хорошие вопросы к экспертам, которые вы оставите в комментариях.
Вопросы должны быть по теме, в которой разбираются эксперты, плюс они должны быть сложными и интересными.
В идеале вы рассказываете о какой-то сложности, с которой столкнулись в работе, как решали ее и почему не получилось + спрашиваете совет. Можно задавать любое количество вопросов.
Итоги подведем завтра, 30 октября, в 16-00.
Мы хотим дать возможность «вскочить на уходящий поезд» тем, кто очень хотел попасть на конференцию, но не успел или не смог купить билет. Badoo дарит 2 билета на конференцию за самые хорошие вопросы к экспертам, которые вы оставите в комментариях.
Вопросы должны быть по теме, в которой разбираются эксперты, плюс они должны быть сложными и интересными.
В идеале вы рассказываете о какой-то сложности, с которой столкнулись в работе, как решали ее и почему не получилось + спрашиваете совет. Можно задавать любое количество вопросов.
Итоги подведем завтра, 30 октября, в 16-00.
- Алексей Рыбак
Глава разработки Badoo (Head of Engineering)
Может проконсультировать по вопросам управления разработкой в крупном проекте, масштабирования и производительности, мониторинга, поддержки, BigData и Business Intelligence.
+10
Кастомные социальные кнопки
5 мин
74KНедавно участвовал в разработке одного проекта — фото конкурса. По задумке, рейтинг фото альбомов должен формироваться из суммы всех публикаций в социальных сетях: Facebook, Вконтакте, Twitter. Т.е. общий рейтинг фотоальбома расчитывается:
На макетах, вид кнопок несколько отличался от предоставляемых социальными сетями плагинов, формируемых функциями api. В частности вид счетчиков:
Помимо несоответствий с дизайном, каждый плагин формирует излишний хтмл код, а хотелось бы лаконичный.
Детальнее ознакомившись с api каждой сети, окончательно убедились в отсутствии расширенных возможностей для кастомизации кнопок и этот факт понять можно, все стремятся к единоборазности своих кнопок. Решили отказаться от использования готовых плагинов и сделать свои кнопки.
Итак:
Рейтинг фотоальбома = кол-во «Share» в Facebook + кол-во «Сохранить» в Вконтакте + кол-во «Retweet» в Twitter
На макетах, вид кнопок несколько отличался от предоставляемых социальными сетями плагинов, формируемых функциями api. В частности вид счетчиков:
Помимо несоответствий с дизайном, каждый плагин формирует излишний хтмл код, а хотелось бы лаконичный.
Детальнее ознакомившись с api каждой сети, окончательно убедились в отсутствии расширенных возможностей для кастомизации кнопок и этот факт понять можно, все стремятся к единоборазности своих кнопок. Решили отказаться от использования готовых плагинов и сделать свои кнопки.
Итак:
- количество лайков будем получать от REST сервисов каждой социалки
- кнопки рисуем свои и обрабатываем событие click
+89
+21
Географические координаты всех городов на Земле
1 мин
19KВ поисках базы данных городов мира для своего погодного сайта, наткнулся на интересный ресурс. На нем просто выложен список всех населенных пунктов, упорядоченный по странам и областям.
Информация, предоставляемая для каждого населенного пункта:
— географические координаты
— высота над уровнем моря
— часовой пояс
— используется ли летнее/декретное время
— ориентировочное количество жителей (обычно, сильно заниженное)
Также отображается небольшая карта, метеорологическая информация и список ближайших аэродромов.
Теперь сижу и думаю, как заполучить эту базу данных. Никакой контактной информации на сайте не нашел, ссылка «Credits» ведет вникуда. Просто стащить всю эту базу через http, видимо, не представляется возможным: только по России там больше 200000 точек. Это несколько суток непрерывного парсинга.
Update:
На сайте geonames.org найдена готовая к скачиванию база данных с подробной информацией по населенным пунктам всего мира. Только по России там 249 516 объектов.
Огромное спасибо, sapl!
Информация, предоставляемая для каждого населенного пункта:
— географические координаты
— высота над уровнем моря
— часовой пояс
— используется ли летнее/декретное время
— ориентировочное количество жителей (обычно, сильно заниженное)
Также отображается небольшая карта, метеорологическая информация и список ближайших аэродромов.
Теперь сижу и думаю, как заполучить эту базу данных. Никакой контактной информации на сайте не нашел, ссылка «Credits» ведет вникуда. Просто стащить всю эту базу через http, видимо, не представляется возможным: только по России там больше 200000 точек. Это несколько суток непрерывного парсинга.
Update:
На сайте geonames.org найдена готовая к скачиванию база данных с подробной информацией по населенным пунктам всего мира. Только по России там 249 516 объектов.
Огромное спасибо, sapl!
+28
Инфраструктура MySpace не справляется с нагрузкой
5 мин
1.1KЖурнал Baseline опубликовал подробный технический анализ инфраструктуры сайта MySpace.com. Как известно, это один из крупнейших веб-сервисов в интернете, который сейчас спорит с порталом Yahoo за звание самого посещаемого сайта в Сети.
+38
Веб 2.0 Список проектов
33 мин
6.2KЗдесь нашел.
Чего нашел? А вот что:
AUDIO 2.0
Bebop — Compare music calendar against your iTunes catalogue. www.bebopular.com
Clickcaster — Record, license, publish & promote your radio show. www.clickcaster.com
Difm — Radio community. www.di.fm
Dottunes — Share your iTunes. www.dottunes.net
Enablr — Transcribe podcasts, Text2Snailmail,… www.enablr.com
Fluctu8 — Create & share your sourcelists. fluctu8.com
Gcast — Podcasting tools & hosting. www.gcast.com
Genielab — Explore, recommend & rate music. genielab.com
Ituneslove — Share your music tastes. www.ituneslove.com
Jamendo — Review, tag, rate & share music. www.jamendo.com/en
Lastfm* — Profile your taste, share, personalize your radio. www.last.fm
Чего нашел? А вот что:
AUDIO 2.0
Bebop — Compare music calendar against your iTunes catalogue. www.bebopular.com
Clickcaster — Record, license, publish & promote your radio show. www.clickcaster.com
Difm — Radio community. www.di.fm
Dottunes — Share your iTunes. www.dottunes.net
Enablr — Transcribe podcasts, Text2Snailmail,… www.enablr.com
Fluctu8 — Create & share your sourcelists. fluctu8.com
Gcast — Podcasting tools & hosting. www.gcast.com
Genielab — Explore, recommend & rate music. genielab.com
Ituneslove — Share your music tastes. www.ituneslove.com
Jamendo — Review, tag, rate & share music. www.jamendo.com/en
Lastfm* — Profile your taste, share, personalize your radio. www.last.fm
+23
Закон логарифмирования зарплат.
2 мин
2.7KСнова попался мне очень интересный документ «Распределение численности работников по размеру зарплаты. Россия, Тюменская область,
Ямало–Ненецкий Автономный Округ, апрель 2005 г.». Так как мои предыдущие математические выкладки «коэффициент богатства» вызвали дискуссию, намного интересней самой заметки, рискнул перейти от коеффициентов к законам. Итак, встречайте, «Закон логарифмирования зарплат».
Ямало–Ненецкий Автономный Округ, апрель 2005 г.». Так как мои предыдущие математические выкладки «коэффициент богатства» вызвали дискуссию, намного интересней самой заметки, рискнул перейти от коеффициентов к законам. Итак, встречайте, «Закон логарифмирования зарплат».
+18
Видео докладов с конференции CodeFest 2014
1 мин
14KМы рады поделиться с вами записью наших выступлений и видео с уникальной секции по высоким нагрузкам с конференции CodeFest. Вы можете задавать ваши вопросы к докладам в комментариях и мы на них обязательно ответим.
1. «Панель: Тренды разработки в высоконагруженных интернет-проектах».
Алексей fisher Рыбак (Badoo) собрал вместе лучших экспертов из Яндекса, Mail.ru, 2ГИС и Communico и обсудил с ними современные тенденции в разработке и поддержке больших высоконагруженных проектов. Плюс эксперты рассказали об интересных решениях и поделились личным опытом.
1. «Панель: Тренды разработки в высоконагруженных интернет-проектах».
Алексей fisher Рыбак (Badoo) собрал вместе лучших экспертов из Яндекса, Mail.ru, 2ГИС и Communico и обсудил с ними современные тенденции в разработке и поддержке больших высоконагруженных проектов. Плюс эксперты рассказали об интересных решениях и поделились личным опытом.
+42
Информация
- В рейтинге
- 310-й
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность