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

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

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

Псевдокод для тестирования

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

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

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

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

PRINT 'read more'

Не стоит бояться теней

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

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

Не боюсь

JNI, часть 3: производительность Java/JNI/NDK

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

Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезной (или просто интересной). В этот раз я покажу замеры производительности, достаточно тривиальные, но отображающие суть. И если вы не знакомы с JNI, но тема интересна, то советую ознакомиться с первой и второй частью этой серии статей.

Читать далее

JNI Часть 2: Примеры

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

Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезной (или просто интересной). В этот раз я покажу примеры решений на JNI, которые совсем немного сложнее, чем hello world. И если вы не знакомы с JNI, то советую начать с первой части.

Читать далее

JNI Часть 1: Введение

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

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

Читать далее

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

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

Всем привет, меня зовут Максим Шаланкин, в Ситимобил я занимаюсь машинным обучением. Мы постоянно принимаем решения на основе больших данных. Даже в пятницу вечером мы доверяем алгоритмам выбор места отдыха. А кто же, если не наши клиенты, лучше всего знают, где в Санкт-Петербурге можно хорошо отдохнуть?

Врууум

Импакт-анализ на примере Android-проекта

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

Одной из самых дорогих по времени операций на CI-сервере является прогон автотестов. Есть множество способов их ускорения, например, распараллеливание выполнения по нескольким CI-агентам и/или эмуляторам, полная эмуляция внешнего окружения(backend/сервисы Google/вебсокеты), тонкая настройка эмуляторов(Отключение анимации/ Headless-сборки / отключение снепшотов) и так далее. Сегодня поговорим про импакт-анализ или запуск только тех тестов, которые связаны с последними изменениями в коде. Расскажу какие шаги нужны для импакт-анализа и как мы реализовали это в нашем проекте.

Читать далее

Ситимобил вместе с экспертами из разных компаний подводит итоги года в разных областях Data Science

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

Всем привет!

Подходящий к концу 2021 год был очень насыщенным — нам удалось провести 5 митапов с интересными спикерами и экспертами рынка Data Science и Machine Learning. Мы узнали много интересного, и это здорово!

Каждый год выходят сотни статей по машинному обучению, нейронным сетям, рекомендательным системам и другим областям связанным с искусственным интеллекта. Появляются тысячи новых репозиториев, API и сервисов с использованием современных технологий Data Science.

А что из этого действительно стало важным событием? На какие технологии и сервисы стоит обратить внимание? На эти вопросы ответили эксперты по Data Science.

Читать

Блокировки MySQL: виды, проблемы и способы обнаружения

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

Рано или поздно любой разработчик или администратор СУБД, имеющий дело с MySQL, сталкивается с проблемой блокировок. Всё дело в природе MySQL как системы с конкурентным доступом на чтение/запись. Я расскажу о видах блокировок в MySQL, их преимуществах и недостатках, о проблемах, которые они вызывают, а также дам полезные советы по обнаружению и способам борьбы с блокировками.

Читать далее

Как мы учились находить заказы по пути домой

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

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

Нам жаловались на некоторые предложения: водители считали, что им предлагают заказы не по пути. Поэтому они часто отказывались от заказа после подачи автомобиля, что приводило к плохому пользовательскому опыту и у водителей, и у пассажиров. Мы решили пересмотреть алгоритм. Самый сложный вопрос в этой задаче — «что такое по пути?». Оказалось, каждый водитель понимает это по-своему.

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

Поехали

React. Как не стать заложником макета, или пример использования принципа единой ответственности

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

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

Для наглядного примера из практики рассмотрим приложение «Такси ВКонтакте», а именно указание «нитки» маршрута.

Поехали

Тестирование с нуля, или Один в поле — тестировщик

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

Никто.

Абсолютно никто.

Вы — единственный тестировщик в проекте.

Читать далее

Как справиться с отсутствием личных проектов

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

Постоянно читая статьи на тему того, как %user% буквально на коленке научил свою кофеварку выгуливать собаку, начинаешь чувствовать себя немного неуютно. Складывается ощущение, что вокруг тебя взрослый мир и все вокруг знают больше тебя, умеют лучше и т.д. 

Читать далее

Apple Watch, статистика и Siri — как мы провели iOS-хакатон

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

Всем привет, меня зовут Семён, я iOS-разработчик в Ситимобиле. ?‍♂️

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

Читать далее

Ближайшие события

Go и MySQL: настраиваем пул соединений

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

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

немного затронем основы клиент-серверного протокола MySQL, его базовое устройство и принципы работы;

дальше перейдем к Go части и разберем реализацию пула соединений;

будем двигаться от конфигурирования соединений к выполнению запросов, параллельно заглядывая в код драйвера.

Надеюсь каждый для себя найдет что-то полезное.

Поехали

Геоанализ этажности Санкт-Петербурга алгоритмом KDE, или Как меняется облик города

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

Всем привет, меня зовут Максим Шаланкин, в Ситимобил я занимаюсь машинным обучением. Мы используем множество крутых алгоритмов для оптимизации наших сервисов и улучшения бизнес-процессов. В этой публикации я расскажу, как использовать в геоаналитике алгоритм ядерной оценки плотности (Kernel Density Estimation) и строить полигоны на карте, основываясь на распределении географических данных.

Врууум

Citymobil Data Meetup #1 | Работа с географическими неоднородными данными в моделях онлайн-оценки

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

Спасибо большое, что все пришли послушать. У нас сейчас будет с вами чуть-чуть другая тема выступления. Мы поговорим про работу с географическими данными уже не с точки зрения такси, а с точки зрения работы с данными про недвижимость, что будет не менее интересно. Меня зовут Андрей Критилин. Я руководитель центра моделирования компании ЦИАН. О чем мы с вами сегодня конкретно поговорим. 

Читать далее

Citymobil Data Meetup #1 | Switchback эксперименты и сетевые эффекты

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

Всем привет! На связи с вами Артем Солоухин. Я представляю команду surge pricing, подразделение эффективности и маркетплейса «Ситимобил». Сегодня мы с вами немного поговорим про switchback эксперименты и про сетевые эффекты. Начнем с небольшого интро в том, чем занимается наша команда, чтобы стало понятно, почему нас волнует то, о чем мы сегодня поговорим.  Далее немного обсудим сетевой эффект, поговорим про switchback, решает ли он проблему сетевого эффекта и насколько. Подведем какие-то итоги. Итак, погнали. 

Читать далее

Эффективный DevOps

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

Статья по мотивам доклада «Эффективный DevOps / Максим Залысин (Ситимобил)» с конференции DevOps Live 2020 команды Онтико.

Читать далее

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

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

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

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

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

Читать далее
OSZAR »