• M* — алгоритм поиска кратчайшего пути, через весь мир, на смартфоне



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

      Под катом представлена обобщенная эвристика к алгоритму A*, полезная именно в свете практической пригодности на больших графах при ограниченных ресурсах, например, на мобилке.
      Читать дальше →
    • Все «радости» CallKit или как мы делали определитель номера на iOS 10



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

        В июне мы ездили на WWDC 2016, и на одной из сессий ребята из Apple обмолвились, что наконец-то можно делать «gorgeous astonishment» — определитель номеров под iOS 10. Радости нашей не было предела, но до поры до времени: как Apple любит, фичу она предоставила с рядом ограничений.
        Скорее подробности
      • Не откладывайте в почтовый ящик: b2c-мессенджер 2ГИС



          В сентябре на 2gis.ru появилась новая фича — b2c-мессенджер для общения с организациями. Чат очень удобен при поиске товара или услуги: можно написать сразу в несколько компаний, не нужно слушать голоса роботов-автоответчиков или ожидать на линии, пока оператор уточнит цену или остаток нужного товара. Выберите компанию, нажмите на иконку сообщения на карточке компании, и откроется чат.

          Чтобы сделать мессенджер, нам пришлось немного поразбираться с тем, как вообще работают чаты и что под капотом у «больших братьев» типа WhatsApp или Telegram. Оказалось, всё не так страшно.
          Читать дальше →
        • Навигатор 2ГИС: Экстраполяция позиции автомобиля



            В приложении 2ГИС теперь есть навигатор. Мы научились «ехать» по треку, озвучивать манёвры, автоматически перестраивать маршрут, рассчитывать время в пути, доводить пользователя до входа в здание или организацию, учитывая заборы и шлагбаумы, — и всё это в честном офлайне. Пробки (вот разве что для них нужен интернет), разведённые мосты и перекрытые улицы учитываем давно. Пока в нашем навигаторе — необходимый минимум. Чуть позже научим его предупреждать о слишком высокой скорости, лежачих полицейских и камерах ГИБДД, настроим ночной режим, сделаем маршруты по платным и грунтовым дорогам опциональными. Чтобы воспользоваться им, нужно обновить 2ГИС в своем смартфоне или скачать в AppStore или Windows Store. Для Android обновление выходит постепенно, начиная с 22 августа (будет доступно на всю аудиторию к сентябрю).

            А сегодня расскажем, как навигатор 2ГИС предугадывает положение автомобиля и плавно перемещает стрелочку по маршруту. Ведь именно качество ведения пользователя по маршруту определяет эргономику интерфейса любого современного навигатора, простоту ориентирования на местности и своевременность совершения манёвров.
            Читать дальше →
          • Эффективное использование Github


              Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

              Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


              Содержание



              Читать дальше →
              • +147
              • 95,8k
              • 38
            • О трехмерном Z-order замолвите слово


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

                Вы спросите: «Кому вообще интересны эти небесные объекты?» и даже: «Ну и при чём здесь 2ГИС?» и будете отчасти правы. Ведь методы пространственного индексирования являются универсальной ценностью.

                Обычно, имея дело с геоданными, мы работаем с локальной проекцией на плоскость и тем самым отмахиваемся от искажений. В масштабах планеты это сделать труднее — начинают выпирать астрономические проблемы.
                Что касается объёмов данных, уже сейчас в OSM более 4 млрд точек и 300 млн дорог. Это соизмеримо с масштабами, характерными для звёздных объектов. Да и помимо всего прочего, звёздные атласы — отличный стенд для разработки и отладки пространственных алгоритмов.

                Обещанные тонкости и выводы под катом.
                Читать дальше →
              • Ещё больше комфорта в разработке фронтенда с TARS

                  TARS

                  Прошли очередные полгода с последних новостей о TARS (раз и два), а значит настало время поделиться новинками. Как всегда напомню, что TARS — это основанный на Gulp сборщик фронтенда, который помогает фронтенд-разработчику или даже целой команде создавать проекты любой сложности. Мы продолжаем уверенное шествие по России и не только. TARS уже используют в Нидерландах, Японии, Китае, Украине, Польше и других странах. Это можно заметить и по количеству звёзд на github, и по числу участников чата в gitter, и по количеству установок TARS-CLI за последний месяц (больше тысячи, а в пике больше 3 тысяч). Мы закрыли почти две сотни issue, выпустили два крупных обновления. Пользователи сборщика активно репортят, участвуют в разработке. Можно сказать, что у нас родилось маленькое сообщество.
                  Подробности
                  • +12
                  • 15,4k
                  • 6
                • Городской хакатон 2ГИС в Москве



                    После крутого хакатона в Новосибирске мы решили устроить ещё один — в Москве. Тема та же — «Продукты для комфортной жизни в городе».

                    Приглашаем бекенд-разработчиков, фронтендеров, мобильных разработчиков, дизайнеров и менеджеров в наш офис на «Арме». Хакатон пройдёт с 17 по 19 июня. Регистрируйтесь со своей идеей или присоединяйтесь к заявленным проектам.
                    Подробнее про хакатон
                    • +12
                    • 3,1k
                    • 2
                  • Этажи: 3D-навигация на WebGL в 2gis.ru



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

                      Этажи для веба сделаны на технологии WebGL: они полностью трёхмерные, их можно крутить и приближать. Это первый проект компании, сделанный на этой технологии, и мы хотели бы поделиться опытом реализации.
                      Читать дальше →
                    • Первый хакатон 2ГИС



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



                          Хотел по традиции написать про спикеров, которые будут в этом году на CodeFest 2016. Но в мою имманентную связь с текстовым редактором ворвался Евгений likegroof и предложил добавить внутренней кухни программного комитета да рассказать про домашние заготовки.

                          CodeFest — это конференция для разработчиков, тестировщиков, менеджеров и дизайнеров. Слушаем доклады, общаемся на квартирниках (специальный дискуссионный формат), веселимся на афтепати. Встречаемся в 1500 касок 26–27 марта в Новосибирске.

                          А рассказать есть о чём
                        • Тестируем вёрстку правильно

                            Makeup — инструмент для комфортного ручного регрессионного тестирования вёрстки

                            Что не так с тестированием вёрстки


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

                            Проблема тестирования вёрстки в том, что только живой человек может сказать, хорошо свёрстан блок на странице или нет. Поэтому чаще всего мы тестируем HTML и CSS вручную: проверяем, как будет вести себя блок, если в нем будет слишком много (или слишком мало) текста или дочерних элементов; смотрим, чтобы все возможные варианты отображения блока смотрелись корректно; помним о том, как блоки должны адаптироваться к разным устройствам и разрешениям экрана.
                            Можем ли мы перестать делать это руками?
                          • Хит-парад проектов Городского хакатона



                              В конце февраля мы устроим открытый хакатон. Будем разрабатывать сервисы для жизни в городе.

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

                              Сейчас в шорт-листе хакатона 24 идеи. Мы расскажем о самых популярных — возможно, они вдохновят вас на собственный проект, и вы составите нам компанию.
                              Читать дальше →
                            • Новый 2ГИС для Android — начинаем публичное тестирование

                                Новый 2ГИС для Android вышел в публичное тестирование. Чтобы его установить, перейдите на страницу в Google Play или найдите в поиске по запросу «2ГИС beta». Доступно для устройств, которые работают на Android 4.1 и выше.

                                go to gp
                                Читать дальше →
                              • История одного прогресс-бара



                                  Наверное, любому программисту, который разрабатывает пользовательский интерфейс на C#/XAML, приходилось писать нестандартные элементы управления. В нашей веселой команде 2GIS для Windows Phone мы довольно часто делаем это, и такие задачи стали почти рутиной. Но об одном случае мне хочется рассказать подробнее. Все началось с того, что однажды нам понадобилось написать весьма своеобразный прогресс-бар.

                                  Читать дальше
                                • WebGL для всех

                                  • Tutorial


                                  Идея данной статьи родилась после нескольких мучительных недель изучения WebGL. На личном примере выяснилось, что люди, не сталкивающиеся до этого с 3D-графикой, имеют в основном ошибочные представления о работе данной технологии. К тому же была проблема с поиском информации в интернете.

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

                                  Этой статьёй хочется облегчить порог вхождения в чистый WebGL, дать начальное представление и подсказать, куда двигаться дальше.
                                  Поехали!
                                • Выступи на CodeFest



                                    Конференции разработчиков CodeFest пять лет. Все пять лет мы формировали программу только силами программного комитета: искали спикеров, приглашали, подкупали, угрожали. Всё сами. Вы все пять лет попрекаете нас этим. Мол, в программу снаружи не пробиться. Мы всё осознали и хотим сделать предстоящую конференцию более открытой. Поэтому приглашаем вас выступить на CodeFest.
                                    Читать дальше →
                                    • +18
                                    • 5,1k
                                    • 4
                                  • Winium: теперь для Windows Phone


                                      Для автоматизации тестирования под Windows Phone и Windows нет удобных и открытых инструментов, которые можно легко адаптировать под свои нужды. Те, что есть, закрыты, ограничены и предлагают свой подход, отличающийся от общепринятых стандартов вроде Selenium WebDriver.

                                      Мой коллега skyline-gleb недавно писал на Хабре, как мы разработали свой selenium-like инструмент автоматизации функционального тестирования desktop-приложений под Windows. Параллельно мы разрабатывали аналогичный инструмент, только под мобильные платформы от Microsoft.

                                      О том, почему взялись его писать, какую пользу получили от использования единой платформы для автоматизации тестирования под все мобильные платформы и как внедрить это на вашем проекте, читайте в этой статье.
                                      Читать дальше →
                                      • +19
                                      • 8,1k
                                      • 9
                                    • Продолжаем бороться с frontend-рутиной

                                        image

                                        Прошло полгода с последней новости о TARS на хабре.

                                        Напомню, что TARS — это сборщик html-верстки, основанный на gulp, в помощь любому frontend-разработчику (или даже целой команде), для создания проектов любой сложности. За последние шесть месяцев было закрыто 88 issue, выпущено 7 версий, появился CLI, так вышло, что с yeoman’ом отношения не сложились, поэтому появилась своя версия. TARS переехал в свой новый дом на github, обзавелся командой из 4 разработчиков + небольшой армией фанатов. Кстати, огромное вам спасибо за мгновенные фидбеки после релизов и не только. TARS был внедрен в нескольких вебстудиях России и за рубежом. Сборщик научил компонентному подходу не один десяток разработчиков, привлек в ряды frontend’еров тех, кто боялся всей рутины верстки. В общем, появилось много всего нового, и об этом хотелось бы рассказать.
                                        Подробности
                                      • Пешком по тайлам



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

                                          Ни один из известных нам сервисов не строил маршрут из точки А до точки Б там, где нет тропинок и тротуаров, зато полно заборов и домов причудливых очертаний.

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

                                          Принято считать, что такой способ строить маршруты неприемлем, потому что съедает много ресурсов. Под катом — как мы с этим справились.
                                          Читать дальше →

                                        Самое читаемое