Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Применение SURF для создания маркера дополненной реальности

ПрограммированиеОбработка изображений

Применение SURF для создания маркера дополненной реальности


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

Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры18.7K
Комментарии 6

Поиск кропнутых дубликатов изображений с помощью перцептуальных хешей

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



Читать дальше →
Всего голосов 129: ↑118 и ↓11 +107
Просмотры66.9K
Комментарии 39

Организуем ML-проект с помощью Ocean

SurfData MiningМашинное обучение

image


Вступление


За годы разработки ML- и DL-проектов у студии Surf накопились и большая кодовая база, и много опыта, и интересные инсайты и выводы. При старте нового проекта эти полезные знания помогают увереннее начать исследование, переиспользовать полезные методы и получить первые результаты быстрее.


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


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


  • Каждый проект был организован по-разному, особенно если их инициировали разные люди.
  • Недостаточно отслеживали, что делает код, как его запустить и кто его автор.
  • Не использовали виртуализацию в должной степени, зачастую мешая своим коллегам установкой существующих библиотек другой версии.
  • Забывались выводы, сделанные по графикам, которые осели и умерли в горé jupyter-тетрадок.
  • Теряли отчеты по результатам и прогрессу в проекте.

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


Вишенка на торте — логи проекта, которые агрегируются и превращаются в красивый сайт, автоматически собранный с помощью выполнения одной команды.


В статье мы расскажем на маленьком искусственном примере, из каких частей состоит Ocean и как его использовать.

Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Просмотры4.5K
Комментарии 0

Создаем шаблон Xcode проекта

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


Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры5.2K
Комментарии 5

Rekko Challenge 2019: как это было

SurfМашинное обучениеИскусственный интеллект


Не так давно на платформе Boosters прошел контест рекомендательных систем от онлайн-кинотеатра Okko — Rekko Challenge 2019. Для меня это был первый опыт участия в соревновании с лидербордом (ранее пробовал силы только в хакатоне). Задача интересная и знакома мне из практики, призовой фонд есть, а значит, был смысл участвовать. В итоге я занял 14 место, за что организаторы выдали памятную футболку. Приятно. Спасибо.

В этой статье я кратко погружу вас в задачу, расскажу о выдвинутых мной гипотезах, а также о том, как затащить соревнование по рекомендательным системам и попасть в топ-15 без опыта стекинга, что будет особенно полезно тем, кто только собирается участвовать в контестах.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры1.6K
Комментарии 2

ViewPager 2 — новая функциональность в старой обертке

SurfРазработка под Android
ViewPager — один из самых известных и широко используемых компонентов Android Support Library. Все простейшие карусели, онбординги и слайдеры в мобильных приложениях для Android выполнены именно на нем. В феврале 2019 года команда разработки AndroidX выпустила ViewPager2. Давайте разберемся, какие у этого были предпосылки и какими преимуществами обладает обновленная версия компонента.


Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры19.8K
Комментарии 10

Обзор облачных сервисов для разработки бэкенда мобильных приложений

SurfРазработка мобильных приложенийОблачные сервисы
Разработка бэкенда — сложный и затратный процесс. При разработке мобильных приложений ему зачастую уделяется неоправданно больше внимания. Неоправданно, потому что каждый раз приходится реализовывать типичные для мобильных приложений сценарии: отправить push-уведомление, узнать сколько пользователей заинтересовались акцией и оформили заказ и т.п. Хочется решение, которое позволит сфокусироваться на важных для приложения вещах без потери качества и деталей в реализации второстепенных. И такие решения есть!

Подобные сервисы называются Mobile Backend-as-a-Service (MBaaS). Процессы создания бэкенда с их помощью упрощены, по сравнению с разработкой «вручную». Это экономия на найме отдельного backend-разработчика. А тот факт, что провайдер MBaaS берет на себя все вопросы, связанные со стабильностью серверов, балансировкой нагрузки, масштабируемостью и прочими инфраструктурами сложностями, придает уверенности в качестве полученного результата и является основным преимуществом таких сервисов.

В этой статье рассмотрим несколько крупных и зарекомендовавших себя сервисов: Microsoft Azure, AWS Amplify, Google Firebase, Kumulos.


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

Reactive Data Display Manager. Введение

SurfРазработка под iOSРазработка мобильных приложенийSwift
Это первая часть из цикла статей о библиотеке ReactiveDataDisplayManager (RDDM) от команды iOS разработки Surf. В этой статье я опишу частые проблемы, с которыми приходится сталкиваться при работе с «обычными» таблицами, а также дам описание RDDM.


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

Тестирование Flutter-приложений. Начало

SurfРазработка мобильных приложенийDartТестирование мобильных приложенийFlutter

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


Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры9.3K
Комментарии 4

Удаленка в IT: личный опыт

SurfКарьера в IT-индустрии
Сейчас все больше компаний готовы к найму удаленных сотрудников. Для работодателей это расширяет возможность выбора высококвалифицированных специалистов. В Surf найм удаленных сотрудников практикуется уже давно, на данный момент 40% работают дистанционно — разработчики и менеджеры. Удаленных QA мы не нанимаем из-за специфики мобильной разработки — нужен большой парк устройств, на которых проводится тестирование, и это сложно организовать дома. Процессы в Surf адаптировались к работе с удаленщиками в отлаженный механизм, который позволяет организовать эффективную работу над проектами.

image
Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Просмотры21.1K
Комментарии 32

Разработка мобильного приложения без сервера

SurfOpen sourceРазработка мобильных приложенийТестирование мобильных приложений
Очень часто при разработке мобильных приложений (возможно с веб-приложениями та же проблема) разработчики попадают в ситуацию, когда бэкэнд не работает или не предоставляет нужных методов.

Такая ситуация может происходить по разным причинам. Однако, чаще всего на старте разработки, бэкэнд просто не написан и клиент начинает без него. В таком случае начало разработки затягивается на 2-4 месяца.

Иногда сервер просто отключился (упал), иногда не успевает выкатывать нужные методы, иногда есть проблемы с данными и т.п. Все эти проблемы привели нас к написанию небольшого сервиса Mocker, который позволяет подменить реальный бэкэнд.


Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры10.2K
Комментарии 15

Находим потерянные файлы в нескольких Xcode таргетах

SurfRubyРазработка под iOSРазработка мобильных приложенийXcode

Привет, я Саня — iOS-разработчик в Surf, и в этой статье поделюсь своим способом решения головной боли, которая возникает при работе на проекте с несколькими таргетами.


Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры1.3K
Комментарии 14

Проблемы архитектуры в больших проектах

SurfРазработка под iOSРазработка мобильных приложенийПроектирование и рефакторингSwift

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


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


image

Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры6.9K
Комментарии 2

Проблемы взаимодействия с внешними командами на больших проектах

SurfРазработка под iOSРазработка мобильных приложенийДизайн мобильных приложений

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


image

Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры2.6K
Комментарии 2

Как работать из дома. Чек-лист удаленщика

SurfУправление персоналомКарьера в IT-индустрииЗдоровье
В интернете огромное количество заметок на тему удаленной работы, с лаконичным обзором минусов, плюсов и известными советами, как вытащить себя из рутины, начиная с «Первым делом снимите пижаму». В блоге Surf мы уже затрагивали эту тему в статье моей коллеги, которая поделилась своим опытом, но с ростом количества удаленных сотрудников (и моим переходом на «удаленку» после 20-летнего опыта работы в офисе), я решила изучить вопрос глубже: читала зарубежные блоги про удаленную работу и пробовала разные идеи. Здесь поделюсь своим опытом, методами сохранения и повышения мотивации. А в конце статьи я приготовила небольшую памятку сотруднику home office.

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


Читать дальше →
Всего голосов 21: ↑12 и ↓9 +3
Просмотры13.4K
Комментарии 8

Flutter. Весеннее обновление 2020

SurfРазработка мобильных приложенийFlutter
Перевод
Привет! Меня зовут Евгений Сатуров, я Flutter-разработчик Surf и основатель Flutter Dev Podcast.
Ниже перевод статьи Tim Sneath и Patrick Sosinski с моими комментариями.

Полмиллиона разработчиков, 50 тысяч приложений, взрывной рост и обновлённый релизный цикл.

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


Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры5K
Комментарии 13

Flutter под капотом

SurfПрограммированиеРазработка мобильных приложенийDartFlutter
🔥 Технотекст 2020
Всем привет! Меня зовут Михаил Зотьев, я работаю Flutter-разработчиком в Surf. Мне, как, наверное, большинству других разработчиков, которые работают с Flutter, больше всего нравится то, как просто создавать с его помощью красивые и удобные приложения. Чтобы войти во Flutter разработку, нужно совсем немного времени. Недавно я работал в геймдеве, а теперь полностью переключился на кроссплатформенную мобильную разработку на Flutter.

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

Поскольку у Flutter открытые исходники, я решил разобраться с тем, что же там под капотом (on the Dart side of the Force), и поделиться этим с вами. Отдельно почитать про Dart и его преимущества можно в нашей статье "Почему Flutter использует Dart, а не Kotlin или JavaScript".


Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Просмотры14.6K
Комментарии 15

Организация Flavors во Flutter

SurfРазработка мобильных приложенийFlutter

Для чего нужны Flavors


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


Здесь можно заменить слово аналитика на любое другое: пуш-нотификации, креш-репортинг и т.д.


И в этой ситуации нас спасает разделение приложения на две версии отличающиеся минимально, например Bundle ID(package-name). Разработчики и тестеры используют только специальную dev версию, а пользователи продовую.


Это как раз и есть одна из задач flavor’ов. Здесь будет использоваться именно flavor, так как именно это название используется Flutter'ом. Люди, которые знакомы с Android-разработкой, думаю сразу узнали этот механизм.


Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры3.3K
Комментарии 4

SSL pinning во Flutter

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

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


Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры4.7K
Комментарии 7