Как стать автором
Обновить
131.07
2ГИС
Главные по городской навигации
Сначала показывать

Как мы перешли на конфигурацию Microsoft.Extensions.Configuration (IOptions) и стало хорошо

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров5.1K

Привет, меня зовут Андрей Рягузов, в 2ГИС я разрабатываю внутренние продукты для актуализации справочных данных на .NET.

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

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

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

Внутренние коммуникации инженеров: как поддержать командный дух на удалёнке

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.3K

Привет! Я Катя Глушанина, тестировщик в 2ГИС. В далёком 2019 год в нашей компании было не так много сотрудников, а тестировщиков в веб-отделе — ещё меньше. Мы все работали в офисе, много общались и решали вопросы на месте. Ламповость атмосферы была включена по умолчанию. Компания начала расти, и с этим пришли новые вызовы. Стало больше команд, тестировщиков, появились удалённые сотрудники.

Это привело к трём «побочным эффектам»:

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

Нет обмена знаний. В распределённых командах могут чаще придумываться велосипеды.

Чувство изоляции. Одному дома может быть грустно: даже мем не с кем обсудить.

И мы поняли, что нужно что-то менять.

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

d42 в действии: лучшие практики подготовки данных

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.8K

Привет, меня зовут Андякина Ольга, я QA‑инженер в компании 2ГИС, тестирую сервис по бронированию отелей Отелло. В этой статье расскажу про плюсы и минусы разных подходов к генерации данных и поделюсь хорошими практиками подготовки данных на примере пакета библиотек d42 и нашего проекта. В первую очередь, наш опыт будет полезен тем, кто занимается автоматизацией тестирования фронтенда.

Автоматизированное тестирование сложно представить без использования тестовых данных. Например, при интеграционном тестировании нужно записывать данные в базу и валидировать полученные данные, в нагрузочном — выполнять запрос с уникальными параметрами. Также данные могут потребоваться при фронтенд‑ и e2e‑тестировании, чтобы наполнить блок текстом или ввести ФИО в форму. Есть различные подходы к получению тестовых данных для автотестов, и генерация данных — один из самых удобных и гибких подходов.

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

Адаптируем VoiceOver для людей

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.2K

Меня зовут Женя Тютюев, я iOS-разработчик в компании 2ГИС. Хочу поделиться, как адаптировал наше приложение под VoiceOver: 

— Делюсь историей про сдвиг парадигмы и как перешёл из стадии «делать, потому что Эпл советует» в совершенно новую — «делать для людей». 

— Как разработал новый вид snapshot-тестирования, чтобы ничего не ломалось при добавлении новых неадаптированных элементов. 

— И описал несколько нюансов, которые важно учесть в работе: escape, динамический расчёт доступности, укрупнение элементов.

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

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

Генерация документации из моделей с помощью Pydantic

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.6K

Привет, меня зовут Роман Брылунов, я QA Automation в команде сервиса транспорта 2ГИС. Мы автоматизируем сервисы транспортных сценариев, таких как построение маршрутов для разных видов транспорта, построение пешеходных маршрутов, решение задачи коммивояжера. Основная часть наших тестов — функциональные тесты логики приложения.

С сервисами общаемся по HTTP, но есть и несколько внутренних сервисов со взаимодействием по gRPC. Все ответы, полученные от сервисов, мы предварительно валидируем перед обработкой в тесте. Для валидации используем библиотеку Pydantic. Это позволяет нам описывать формат взаимодействия с помощью моделей и обрабатывать ответы в виде Python-объектов вместо словаря после стандартного парсинга JSON. Тесты встроены в CI, успешное прохождение тестов является блокирующим условием для влития кода. Таким образом, чтобы внести изменения в API, необходимо актуализировать модели в тестах. В противном случае ответ от сервиса не пройдёт валидацию при прогоне тестов. 

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

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

Мокирование как хорошая практика тестирования фронтенда

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.1K

Привет, я Фируз Шоев, тестировщик в Отелло — сервисе бронирования отелей от 2ГИС. Мы в стадии активного роста и постоянно усиливаем команду. Несколько месяцев назад я подключился к найму тестировщиков и с тех пор провожу собеседования практически каждую неделю. За это время я стал замечать, что многие кандидаты не уделяют должного внимания тестированию фронтенда.

Почти в каждом втором собеседовании я слышу следующее:

Во фронтенде можно максимум вёрстку протестировать отдельно от бэкенда.

Фронтенд тестируем через end-to-end тесты, но они сложные и нестабильные.

А как вообще тестировать фронтенд изолированно?

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

В этой статье я хочу рассказать о важности тестирования фронтенда и пользе моков. Мокирование вносит весомый вклад в обеспечение качества приложений 2ГИС, поэтому надеюсь, что этот подход принесёт пользу и другим.

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

Просветлённый выживший: кто такой фичекрайний и зачем это всё разработчику?

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.1K

Меня зовут Игорь Буняков, я был фичекрайним за реалистичные дороги в 2ГИС. Недавно они вышли в навигаторе, а позже будут доступны в режиме карт на мобильных устройствах и на 2gis.ru. Реалистичные дороги оказались невероятно большими, невероятно сложными, невероятно красивыми. При этом реалистичность — это не столько про красивость, сколько про функциональность. Мы даём пользователям нашего навигатора новый опыт.

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

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

Работа с очередями в RabbitMQ на основе EAV-модели: превращаем плоское в реалистичное

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.1K

Мы добавили реалистичные дороги в навигатор 2ГИС. Теперь дорожное покрытие, разметка, объёмные развязки, съезды, островки безопасности и опоры на многоуровневых дорогах выглядят как в жизни. Под капотом — решение задачи по превращению «плоской» геометрии в объекты с реалистичными шириной и высотой. Чтобы не замедлять обновление дорожной сети, нам требовалась минимальная задержка между изменением дороги и обновлением её «объемного» представления.

Расскажу, как в одном сервисе формируем очереди в RabbitMQ, а в других — читаем и при помощи библиотеки NetTopologySuite превращаем плоские объекты в реалистичные. Выбранный нами подход с потоковой обработкой изменений универсален, поэтому статья может быть интересна всем, кто работает с геометрией и системами реального времени в целом.

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

«Серёга, диктуй код из смс»: как мы ускорили проверку гипотезы с помощью эксперимента

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.1K

Привет! Меня зовут Алина Бузинова, я менеджер продукта Отелло, сервиса бронирования отелей от 2ГИС.

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

В статье расскажу о том, как нам удалось за две недели реализовать пользовательский сценарий, разработка которого оценивалась в полгода. И каких принципов можете придерживаться вы, чтобы применить такой подход в своём продукте.

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

Внутри нельзя снаружи: как мы решаем, где запускать новые сервисы

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров959

На разработку и успешность сервиса влияет то, как его будут запускать — внутри существующего продукта или отдельным приложением. В этом посте Михаил Мельников, продакт-лид Отелло, рассказывает, как мы в 2ГИС решаем, где запускать: внутри или снаружи.

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

Миссия выполнима: как мы создали приложение для Apple Vision Pro за 8 дней

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров8.8K

Всем привет! На связи Саша Сырков из 2ГИС, и это рассказ, как чуть больше недели мы разрабатывали приложение на Vision OS, разбирались в особенностях Reality Composer Pro, ловили всевозможные текстурные баги, а в итоге всё же получили заветный апрув от Apple за 17 часов до официального открытия продаж VR-гарнитуры.

Под катом хронология событий от идеи до рабочего продукта и технические подробности создания нашего первого VisionOS-приложения — краткого справочника с 3D-моделями достопримечательностей.

P.S. для самых пытливых в конце вопрос: кто первый отгадает ответ, тому подарим нашего гуся.

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

Математика наклона в картах, или как мы сделали небо

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.5K

Недавно в карте 2ГИС появились небо и туман, которые можно увидеть, увеличив масштаб и наклон. 

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

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

Пост post-mortem: разбираемся, почему Google Play Protect посчитал 2ГИС вредоносным ПО

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров44K

Что случилось

10 января Google Play Protect ошибочно посчитал 2ГИС вредоносным приложением. 

Пользователи 2ГИС на Android начали получать системное сообщение, что 2ГИС — вредоносное приложение. Мы стали массово получать сообщения от пользователей и разбираться в ситуации. 

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

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

2ГИС — опасное приложение?

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

Пользователи 2ГИС на Android начали получать системное сообщение, что 2ГИС — приложение вредоносное, оно опасно для устройства и личных данных.

Если коротко — конечно же, это не так. 2ГИС всегда соблюдал все правила и продолжает это делать. Более того, в новых версиях приложения ничего принципиально не поменялось, и мы пытаемся выяснить, почему Google считает нас вредоносными.

Под катом — подробнее, в чём дело и как быть UPD от 13 января, 15:00 Мск

UPD 15 января, 11:00 Мск
Вынесли в отдельный пост-post-mortem ответы на вопросы и всё, что известно на сегодняшний день.

Читать далее
Всего голосов 48: ↑38 и ↓10+35
Комментарии132

Замедляем разработку. Вредные советы по тестированию в проектах

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

Привет, меня зовут Кристина Климовских, я — Python Developer в команде DataMining. Главная задача моей команды — поддерживать бесперебойный флоу добычи данных для обогащения и актуализации справочника 2ГИС.

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

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

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

Рендеринг трёхмерных развязок, мостов и тоннелей для реалистичных карт

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

Привет! Меня зовут Арсений Кононов. На прошлой неделе мы зарелизили трёхмерные развязки и тоннели, которые можно увидеть в режиме навигатора. Я расскажу о простой и гибкой технике, реализованной в графической подсистеме нашего графического движка для отображения плоских объектов на произвольной трехмерной поверхности. Например, линии маршрута на поверхности развязки.

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

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

Меряем баги весами и рулеткой

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

Привет! Меня зовут Лёша и я тестирую веб в 2ГИС. Расскажу, зачем мы выделили багам бюджет и наделили их весом, и как мы придумали систему исправления ошибок, из-за которой больше не приходится спорить.

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

Скрытие POI за зданиями

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.4K

C 2018 года карта веб-версии 2ГИС рендерится при помощи WebGL — API для рисования трехмерной графики. Сначала мы в команде веб-карт использовали эту технологию просто как очень быструю рисовалку двухмерных данных с небольшими исключениями в виде 3D-домов и моделей.

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

И тут возникла проблема
Всего голосов 16: ↑16 и ↓0+16
Комментарии0

Строим удобные автомобильные маршруты

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров9.8K

Хороший автомобильный маршрут из точки А в точку Б должен, с одной стороны, быть кратчайшим, а с другой — удобным для водителя. Как правильно вычислить время в пути мы уже рассказали, теперь — об удобстве маршрутов: что это такое, как его измерить и как мы его повышали.

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

Как мы переучивали алгоритм построения маршрутов 2ГИС ради грузовиков

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5.7K

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

Я расскажу, как в 2ГИС устроен алгоритм построения маршрутов в целом и как мы адаптировали его под грузовики — например, учили его строить неоптимальные по времени маршруты.

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

Информация

Сайт
2gis.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия