Как стать автором
Обновить

Компания Delivery Club Tech временно не ведёт блог на Хабре

Сначала показывать

Как можно хранить стабы для MockWebServer в Android-тестах

Время на прочтение11 мин
Количество просмотров4.5K

Привет, меня зовут Николай. Моя должность в Delivery Club — QA Automation Engineer в мобильной платформенной команде. Эта статья будет о том, как мы подменяем и храним ответы бэкенда при UI-автоматизации тестирования курьерского Android-приложения.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Allure TestOps: «Нестандартный» сценарий использования

Время на прочтение9 мин
Количество просмотров5.5K

Привет. Меня зовут Николай, я QA Automation Engineer в мобильной платформенной команде Delivery Club. Эта статья будет о том, как мы интегрировали Allure TestOps (далее Allure TO) в регрессионное тестирование нескольких мобильных приложений и ушли от TestRail. Альтернативу TestRail выбирали мои коллеги, и эту часть мы упомянем вскользь.

Этот материал будет интересен тем, кому предстоит интегрировать мобильные автотесты в Allure TO и хочется узнать про потенциальные проблемы. А также, возможно, тем, кому не полностью подходят стандартные сценарии использования этой TMS. Цель статьи — не дать конкретное решение, а продемонстрировать наш сценарий использования нетипичных возможностей TMS с небольшими вставками кода.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Не работай «в стол»: руководство для эффективного аналитика

Время на прочтение9 мин
Количество просмотров10K

Привет, Хабр! Меня зовут Денис, я работаю продуктовым аналитиком в Delivery Club. Наша команда за последние полгода провела около сотни продуктовых исследований данных, которые способствовали появлению нескольких десятков продуктовых гипотез по улучшению нашего продукта. За это время мы структурировали процесс и минимизировали работу «в стол». Я расскажу об основных этапах исследования, применив которые вы можете значительно улучшить качество своей работы.

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии4

My way or the burn way, или Мой десятилетний путь эмоционального выгорания

Время на прочтение10 мин
Количество просмотров8.4K

Всë надоело, я устал. Мне бы сейчас полежать, а не вот это вот всë… 

Не хочу больше ничего. Все козлы. Что за непонятная постановка задачи, кто еë написал? Зачем это нужно?

Если я не сделаю, всë равно ведь ничего не изменится, зачем это всë?

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

Читать далее
Всего голосов 32: ↑28 и ↓4+24
Комментарии10

Как мы научились А/B-тестировать алгоритмы с помощью switchback-тестов

Время на прочтение12 мин
Количество просмотров4.3K

Привет! На связи Евгений Бокарев и Надежда Грачёва, в этой статье мы расскажем про внедрение switchback A/B-тестов в логистике Delivery Club. Обсудим, как оценивать результат эксперимента, если эффективность доставки одного заказа влияет на другие. И на примере покажем, как мы снизили долю невыполненных заказов, с какими сложностями столкнулись и как их решали.

Читать далее
Всего голосов 21: ↑20 и ↓1+19
Комментарии2

Как обеспечить безопасность сборки ПО: управляем внешними зависимостями

Время на прочтение7 мин
Количество просмотров3.5K

Привет! Проблема управления безопасностью зависимостей — supply chain security — в настоящее время как никогда актуальна. В качестве примера можно привести историю компании SolarWinds: исходный код разрабатываемой ею утилиты был скомпрометирован и среди клиентов компании распространилось вредоносное ПО. Также возникла тенденция по внедрению деструктивного кода разработчиками open-source проектов, широко используемых коммерческими компаниями.

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии3

Функция Reactive во Vue: как это работает

Время на прочтение7 мин
Количество просмотров9.8K

После jQuery я попробовал AngularJS и был очарован его возможностями. Несколько строк в AngularJS заменяли кучу спегетти-кода в jQuery. Это было похоже на магию. Сейчас все современные Frontend-фреймворки так или иначе обеспечивают реактивность, и это уже никого не удивляет. Тем не менее далеко не все разработчики понимают, как это работает.

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии12

Отменяем операции правильно на примере корутин

Время на прочтение17 мин
Количество просмотров12K

Всем привет! Меня зовут Павел, я Android-разработчик в Delivery Club. Моя команда разрабатывает функциональность доставки продуктов из магазинов. Я расскажу о подходе к написанию кода, подразумевающем, что любые долгие операции могут быть отменены. На примере корутин рассмотрим сферы применения такого подхода.

Читать далее
Всего голосов 21: ↑19 и ↓2+17
Комментарии7

Эволюция рекомендаций ресторанов в Delivery Club. Часть 2

Время на прочтение10 мин
Количество просмотров3K

Всем привет! Это вторая часть статьи об изменении подхода к рекомендациям в Delivery Club. В первой части я подробно описал текущие проблемы нашей рекомендательной системы: локально оптимальный баланс exploitation и cold start, а также недостаточно развитый механизм exploration. А также рассказал, как мы решали проблему exploitation через карусель «Вы заказывали», а проблему cold start — через карусель популярных фастфуд-ресторанов. 

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии4

Анализ синтаксиса, который всегда с тобой

Время на прочтение12 мин
Количество просмотров4.1K

Всем привет, меня зовут Денис Лимарев, я разработчик платежной системы Delivery Club. И сегодня я расскажу, как мне надоели однообразные ошибки и собственная невнимательность, и как я с этим борюсь. Недавно я написал статью о нашем линтере, где вскользь затрагивал возможность написания локальных проверок под конкретный проект. Сегодня раскрою эту тему подробнее и опишу приемы, упрощающие проверку кода мне и коллегам. А в конце статьи расскажу, как можно автоматизировать некоторые проверки ИБ из нашей недавней статьи, поделюсь дальнейшими планами по развитию по развитию и оставлю ссылку на доклад автора go-ruleguard (далее ruleguard).

Читать далее
Всего голосов 24: ↑23 и ↓1+22
Комментарии7

Проверяем защищённость приложения на Go: с чего начать

Время на прочтение5 мин
Количество просмотров12K

Привет! Меня зовут Александра, я инженер по информационной безопасности в Delivery Club. Мы используем Go в качестве основного языка для разработки Web-API и представляем вашему вниманию краткое руководство по быстрой проверке сервиса на соответствие базовым требованиям безопасности. Представленную ниже информацию можно адаптировать под проекты, написанные и на других языках.

Читать далее
Всего голосов 26: ↑20 и ↓6+14
Комментарии7

Module Federation: простая загрузка динамических модулей

Время на прочтение8 мин
Количество просмотров13K

Всем привет! Меня зовут Евгений, я работаю frontend-разработчиком в платформенной команде. Моя задача — помогать другим frontend-разработчикам выполнять их задачи эффективнее. Мы в Delivery Club больше года назад внедрили подход с микрофронтендами, о чём писали здесь. Вы можете найти и много других статей с описанием этого подхода.

После выхода стабильной версии Webpack 5 мы решили использовать плагин Module Federation в качестве основного способа загрузки микрофронтендов. В этой статье расскажу, с какой проблемой столкнулся при загрузке динамических модулей и как её решил. Описывать будут на примере плагина Module Federation во всех деталях. Если вы слышите про этот инструмент впервые, то советую предварительно ознакомиться.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии12

Эволюция рекомендаций ресторанов в Delivery Club. Часть 1

Время на прочтение11 мин
Количество просмотров6.6K

Всем привет! Меня зовут Иван Максимов, я работаю Lead Data Scientist’ом в команде рекомендаций и A/B-тестирования Delivery Club. Это первая из серии статей про нашу рекомендательную систему. Я расскажу о том, как мы определили проблемы предыдущего подхода к рекомендациям, и как начали строить новый: с оптимизацией рекомендаций сразу под несколько бизнес-метрик. 

Статья будет интересна data scientist’ам и менеджерам продуктов, которые хотят с нуля построить систему рекомендации контента.

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

Автоматизация оптимизаций в Go

Время на прочтение4 мин
Количество просмотров7.9K
image

Привет, Хабр! Меня зовут Денис Лимарев, я разработчик платежной системы в Delivery Club.
Недавно мы провели два митапа: по оптимизациям и по нашему новому линтеру. На первом митапе разобрали оптимизации кода на Go, а в рамках второго поговорили про создание и возможности нашего нового линтера, который может искать и самостоятельно применять эти оптимизации, и не только. Как делался линтер и поиск каких оптимизаций смогли автоматизировать — читайте под катом.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии1

Код ревью с учётом человеческих слабостей

Время на прочтение7 мин
Количество просмотров11K

Проверка кода (code review) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают, теряют сосредоточенность, ленятся, да и просто испытывают эмоции в самые неожиданные моменты.

Поэтому хочу представить свое видение хороших и плохих практик код ревью с учётом человеческих особенностей.

Читать далее
Всего голосов 27: ↑25 и ↓2+23
Комментарии7

Реверс уязвимого приложения от Delivery Club: результаты конкурса

Время на прочтение9 мин
Количество просмотров4.1K

Привет! Меня зовут Илья Сафронов, я руковожу направлением информационной безопасности Delivery Club. Третьего дня мы запустили конкурс по реверсу и поиску уязвимости в тестовом Android-приложении. Целью было выполнение кода на бэкенде (RCE). За время конкурса APK скачали более 400 раз, а сломали всего два раза, Hall of Fame можно посмотреть на странице скачивания.

Теперь настало время рассказать, в чём заключалась задача и как её решать. Один из победителей — @D3fl4t3 — прислал нам отличный отчёт, его мы и представляем вашему вниманию.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии1

Как назначить самого подходящего курьера: наша скоринговая модель

Время на прочтение8 мин
Количество просмотров5.7K


Всем привет! Меня зовут Михаил Моловцев, и я алкоголик операционный аналитик в Delivery Club. Наша команда помогает бизнесу и разработке в процессах и исследованиях, связанных с курьерами и доставкой заказов. Я занимаюсь исследованиями систем назначений заказов, прогнозированием времени доставки и курьерскими скорингами. Расскажу о том, как мы обновили подход к скорингу курьеров для системы назначения заказов.

Немного о скоринге


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

У вас могут возникать разные задачи по категоризации пользователей. Например, определять клиентов с высокой лояльностью к сервису, или клиентов, которые точно смогут вернуть кредит, и т.д. То есть нужно будет вычислять степень соответствия каждого клиента той или иной категории.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии5

Единая система мониторинга и оповещений BI: правда или вымысел?

Время на прочтение12 мин
Количество просмотров6K


Привет, Хабр! Мы, Юлия Лузганова HiJulia и Наталия Прудникова balzaant, аналитики в команде Business Intelligence Delivery Club. Наш департамент аналитики стремительно вырос за последние полтора года, сейчас в нем 50 человек и десятки различных проектов. Мы в группе BI-аналитики помогаем пользователям получать чистые и актуальные данные. Например, количество заказов, работающие рестораны и время доставки заказов — одни из главных сущностей. Наша основная задача — своевременная и бесперебойная поставка данных в аналитическое хранилище и их подготовка к дальнейшему использованию. Для этого нам необходимо оперативно выявлять проблемы с загрузкой и обработкой информации.

В этой статье мы хотели бы рассказать о создании мониторинга и системы “near real-time” оповещений. С технической точки зрения реализация простая, а вот нервных клеток разработчиков DWH, BI и пользователей после внедрения сохранено бесконечно много.

Почему мы вообще потратили время на создание системы оповещений для команды аналитики? Все просто: нам хотелось меньше заниматься поддержкой, а точнее, мы стремились минимизировать ручной мониторинг загрузки данных, состояния базы и отправки отчетов, чтобы автоматически оповещать пользователей базы данных об изменениях, неоптимальных запросах или активно растущих в объемах таблицах.

В статье вы найдете заметки, которые помогут вам реализовать подобную систему, а также идеи для автоматических оповещений. Также расскажем, как используя логи задач и немного статистики, мы выявляем аномалии в работе процессов.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Геопространственное моделирование с применением методов машинного обучения

Время на прочтение8 мин
Количество просмотров5.1K


Всем привет! Меня зовут Константин Измайлов, я руководитель направления Data Science в Delivery Club. Мы работаем над многочисленными интересными и сложными задачами: от формирования классических аналитических отчетов до построения рекомендательных моделей в ленте приложения.

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

Статья будет полезна не только техническим специалистам, которые могут вдохновиться нашими подходами по работе с геоданными, но и менеджерам, которые смогут прочитать про процесс интеграции нашей модели в бизнес, увидев «грабли», а самое главное — результаты, которых удалось добиться.

Статья написана по мотивам выступления с Евгением Макиным на конференции Highload++ Весна 2021. Для тех, кто любит видео, — ищите его в конце статьи.
Всего голосов 30: ↑30 и ↓0+30
Комментарии10

We need to go deeper: как пасхалка в приложении Delivery Club сократила субъективное время ожидания еды

Время на прочтение4 мин
Количество просмотров7.8K


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

В декабре у нашего разработчика Александра Верестникова возникла идея интегрировать в приложение тайм-киллер — игру-пасхалку, в которую пользователь мог бы поиграть, пока ждёт заказ. Игрушка позволила бы сократить субъективное время ожидания заказа, а тот факт, что её как будто сложно найти, добавил бы происходящему таинственности. Саша зацепил этой идеей другого разработчика, Сахея Игнатьева. И они принялись за работу. После недолгих обсуждений выбор пал на змейку.
Читать дальше →
Всего голосов 38: ↑30 и ↓8+22
Комментарии7
1
Изменить настройки темы