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

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

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

Эксперименты в Ситимобил. Эпизод 2: Атака тестов на Switchback

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

Всем привет! На линию выходит команда динамического ценообразования Маркетплейса СитиМобил.

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

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

Читать далее
Всего голосов 11: ↑10 и ↓1+10
Комментарии5
Как гласит народная мудрость, дурак учится на своих ошибках, а умный на чужих. Меня зовут Вадим (@Sirion), я увлекаюсь математикой и люблю наблюдать, как из хаоса рождаются сложные теории. И в этой статье я хочу рассказать, чему научились умные люди на крахе доткомов. Эта экономическая катастрофа стала импульсом для появления юнит-экономики — полезного и простого инструмента, позволяющего оценить перспективы бизнеса, даже если вы не экономист, а простой разработчик или дизайнер.
Читать далее
Всего голосов 17: ↑16 и ↓1+30
Комментарии20

Как мы за квартал подготовили редизайн водительского приложения

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

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

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

Вот какие изменения должны были произойти.

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

Жизненный цикл ML-модели

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

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

Врууум
Всего голосов 19: ↑19 и ↓0+19
Комментарии1

Знакомимся с async/await в Swift

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

Один из самых ожидаемых релизов на WWDC 21 - новая многопоточность в iOS среде.

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

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

Безопасность в мобильных приложениях

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

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

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

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

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

Повышение устойчивости микросервисов к отказам

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

Как уже известно, около 70 % отказов в приложениях происходят из-за изменений: развёртывания нового кода, применённых миграции в базе данных, изменения конфигурационных файлов и т.д. Остальные 30 % сбоев происходят в ходе работы приложения без прямого вмешательства разработчиков и системных администраторов: из-за проблем с сетью или дисками, возросшей нагрузки от пользователей, аварии в дата-центре. На первую группу мы можем повлиять с помощью управления изменениями и стратегии проведения этих изменений, а как повысить устойчивость к проблемам из второй группы, мы поговорим в этой статье.

Врууум
Всего голосов 21: ↑21 и ↓0+21
Комментарии4

Detekt — пишем свои правила

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

Мы в «Ситимобил», используем статический анализатор кода Detekt. Это инструмент, который при запуске проходит по проекту и показывает допущенные в коде code smell.
Сегодня мы расскажем, как написать свое правило и помочь команде соблюдать уникальные для проекта договоренности написания кода.

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

React. Не вглубь, а вширь. Композиция против реальности

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

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

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

Switchback-эксперименты в Ситимобил. Эпизод 1: Скрытая сила switchback

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

Сегодня с вами на связи отдел динамического ценообразования Ситимобил. И мы начинаем серию статей о том, как мы проводим и оцениваем ценовые эксперименты внутри нашего маркетплейса.

В этой статье мы расскажем вводную информацию про switchback и сетевой эффект.

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

Все что вы (не) хотели знать о Data Science

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

Всем привет! Меня зовут Михаил Дьячков, и в Ситимобил я занимаюсь анализом данных и машинным обучением. Сегодня я хочу поговорить о Data Science: что же это вообще такое в глазах кандидатов, работодателей и экспертов; о несовпадении ожиданий, грейдах и собеседованиях, а также о том, какие задачи решают дата саентисты в Ситимобил.

Вжуууух
Всего голосов 18: ↑18 и ↓0+18
Комментарии7

Как ухаживать за грядкой Redis'а и как сохранить урожай?

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

Чуть более года назад мне посчастливилось погрузиться в углублённое изучение Redis. Всё, что я знал про него на тот момент, это две команды — get и set. Примерно в это же время у нас начался плавный переход со Standalone Redis на Redis Cluster.

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

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

Вас заметили! App Tracking Transparency (ATT) для iOS 14.5

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

Недавно вышла iOS 14.5, а чуть ранее Apple предупредила разработчиков, что начиная с этой версии ОС необходимо поддерживать фреймворк AppTrackingTransparency, который позволяет получить доступ к IDFA.

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

Поиск Dependency Confusion в корпоративном GitLab

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

Не так давно на слуху была новость о векторе атаки Dependepcy Confusion. Это довольно простой, но в тоже время опасный вектор, приводящий к выполнению произвольного кода. Статья является взглядом на проблему со стороны команды безопасности.

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

Настало время офигительных историй. Кастомные транзишены в iOS. [2/2]

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

В прошлой статье мы реализовали анимацию ZoomIn/ZoomOut для открытия и закрытия экрана с историями.

В этот раз мы прокачаем StoryBaseViewController и реализуем кастомные анимации при переходе между историями.

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

Настало время офигительных историй. Кастомные транзишены в iOS [1/2]

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

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

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

Читаем EXPLAIN на максималках

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

Многим, кто работает с MySQL, известно, что команда EXPLAIN используется для оптимизации запросов, получения информации об использованных и возможных индексах. Большинство разработчиков и администраторов СУБД этой информацией и ограничивается. Я же предлагаю изучить команду EXPLAIN максимально подробно.

Читать далее
Всего голосов 15: ↑13 и ↓2+17
Комментарии14

Нейросеть, коллективный мозг и сайт из продуктового рабочего инструмента

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

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

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

Будни такси ВКонтакте

Время на прочтение10 мин
Количество просмотров6.2K
Артем Пулявин руководит фронтенд-разработкой в Ситимобил и на конференции FrontendConf 2020 рассказал про такси ВКонтакте: как проект начинался и каким он стал.

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


Читать дальше →
Всего голосов 16: ↑13 и ↓3+20
Комментарии9

Создание Dashboard в Kibana для мониторинга логов

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


Привет, меня зовут Евгений, я тимлид B2B-направления в Ситимобил. Одной из задач нашей команды является поддержка интеграций по заказу такси от партнеров, и для обеспечения стабильного сервиса мы всегда должны понимать, что происходит в наших микросервисах. И для этого надо постоянно следить за логами.

В Ситимобил для работы с логами мы используем ELK-стек (ElasticSearch, Logstash, Kibana), и объём приходящих туда данных огромен. Найти в этой массе запросов проблемы, которые могут появиться после деплоя нового кода, довольно сложно. И для их наглядного выявления в Kibana есть раздел Dashboard.

На Хабре есть довольно много статей с примерами, как настроить ELK-стек для получения и хранения данных, но о создании Dashboard актуальных материалов нет. Поэтому я хочу показать, как в Kibana создавать визуальное представление данных на основе приходящих логов.

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